我阅读了关于@autoreleasepool功能的Apple文档。它在一个新线程中说,程序员应该使用ARC中的以下代码声明一个新的自动释放池。
@autoreleasepool{
//etc
}
但是作为我的测试,我没有在我的代码中添加@autoreleasepool块,它仍然运行良好。我的代码如下所示。
[NSThread detachNewThreadSelector:@selector(threadTest) toTarget:self withObject:nil];
- (void)threadTest
{
// @autoreleasepool {
for (int i=0; i<1000000; i++) {
NSNumber *num = [NSNumber numberWithInt:i];
[NSString stringWithFormat:@"%@",num];
}
// }
}
我使用Xcode Leaks仪器来查看它是否有任何内存泄漏,但我没有发现任何内存泄漏。因此结果是“似乎不需要在辅助线程中声明@autoreleasepool块”,我的话是否正确,有人可以澄清这个吗?