iOS: Object-C 自动内存管理,活用@autoreleasepool

来源:互联网 发布:仓储软件有哪些 编辑:程序博客网 时间:2024/06/08 16:34

我们可以把需要及时释放的资源放在@autoreleasepool{}块中使用,从而达到及时释放临时内存的目的。


在Object-C中,为了内存管理的需要使用了@autoreleasepool,如果不注意使用,会造成临时内存分配不释放。

一个极端的例子

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){    @autoreleasepool {        NSString *s;        for (int i=0; i<3000000; i++) {            s = [NSString stringWithFormat:@"s%d", i];        }    }    return 0;}
这个例子中,在循环时,内存占用超过了100M

改进后的例子

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){    @autoreleasepool {        NSString *s;        for (int i=0; i<3000000; i++) {            @autoreleasepool{                s = [NSString stringWithFormat:@"s%d", i];            }        }    }    return 0;}
改进后的程序,在循环时,及时释放了临时内存,占用内存不到600K。



0 0
原创粉丝点击