在 这个 WWDC14演示的第17页上写着
使用 Objective-C? 仍然需要管理自动发布池
Autorelease asepool {/* code */}
这是什么意思? 这是否意味着,如果我的代码库没有任何 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
变量应该在第一个 }
之后被释放(就像其他语言一样) ?