在这个WWDC14演示文稿的第17页中,它说:
使用Objective-C?还需要管理自动释放池
autoreleasepool { /* 代码 */ }
这是什么意思?这是否意味着如果我的代码库中没有任何Objective-C文件,则autoreleasepool {}
是不必要的?
在一个相关问题的答案中,有一个例子说明了autoreleasepool
可以很有用:
- (void)useALoadOfNumbers {
for (int j = 0; j < 10000; ++j) {
@autoreleasepool {
for (int i = 0; i < 10000; ++i) {
NSNumber *number = [NSNumber numberWithInt:(i+j)];
NSLog(@"number = %p", number);
}
}
}
}
如果上面的代码被转换成Swift时autoreleasepool
被省略,那么Swift是否足够聪明以知道在第一个}
之后应该释放number
变量(就像其他一些语言所做的那样)?
autoreleasepool
的文档。我已经扩展了您的问题并在开发者论坛上提出了它。 - Aaron Brager