我们可以把需要及时释放的资源放在@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。