您的位置:首页 > 移动开发 > Objective-C

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

2013-12-18 16:07 561 查看
我们可以把需要及时释放的资源放在@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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息