编写高质量代码的52个有效方法

52个有效方法(34) - 以“自动释放池块”降低内存峰值

2018-09-07  本文已影响9人  SkyMing一C
//写在main函数里的这个自动释放池可以理解为最外围捕捉全部自动释放对象所用的池。
int main(int argc, char * argv[]) {

    @autoreleasepool {
    
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        
    }
    
}
for (int i = 0; i < 1000; i++) {
    [self doSomethingWithInt:i];
}
NSArray * databaseRecords = /* . . . */;
NSMutableArray *people = [NSMutableArray new];
for (NSDictionary *record in databaseRecords) {
    @autoreleasepool {
        EOCPerson * person = [[EOCPerson alloc]  initWithRecord:record];
        [people addObject:person];
    }
}
要点
  1. 自动释放池排布在栈中,对象收到autorelease消息后,系统将其放入最顶端的池里。

  2. 合理运用自动释放池,可降低应用程序的内存峰值。

  3. @autoreleasepool这种新式写法能创建出更为轻便的自动释放池。

上一篇下一篇

猜你喜欢

热点阅读