如果之前有人问过这个问题,我深表歉意,但我还没有找到好的答案。
当我运行仪器时,我在代码中的这一行出现泄漏,而不是在 main 中:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
我一直在环顾四周并在某个地方读到它可能是一个错误。有人可以帮我分享一下吗?
我确实注意到我在 main 中也有相同的名称“pool”。
如果之前有人问过这个问题,我深表歉意,但我还没有找到好的答案。
当我运行仪器时,我在代码中的这一行出现泄漏,而不是在 main 中:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
我一直在环顾四周并在某个地方读到它可能是一个错误。有人可以帮我分享一下吗?
我确实注意到我在 main 中也有相同的名称“pool”。
名字无关紧要;pool
整个代码库中可能有数百个变量。重要的是范围。
通常,您会看到:
- someMethod
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
... do stuff ...
id something = [anObject retain];
[pool drain];
return [something autorelease];
}
即你的游泳池被排干了吗?
(drain
在 iOS 上存在;请参阅文档。但是,在所有情况下,最好使用@autoreleasepool{ ... }
;它适用于 ARC 和 MRR。)
我也有这个问题,我第一天学习如何编码的第一个问题!
我所做的只是彻底删除从以下内容开始的整行:
NSAutoreleasepool *pool = [[NSAutoreleasepool alloc] init];
将其替换为:
@autoreleasepool {
然后我在程序底部删除了:
[池释放];
然后用波浪形的括号关闭。
我不知道它为什么起作用,我记得我的第一天,但它可以很好地运行示例书中的程序。