当我运行仪器时,我在代码中的这一行得到泄漏,而不是在主要的:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
我一直在四处寻找,并在某处读到它可能是一个错误。有人可以帮助我并分享一下这个吗?
我确实注意到我的名字也是“游泳池”,也是主要的。
答案 0 :(得分:0)
这个名字并不重要;整个代码库中可能有数百个名为pool
的变量。重要的是范围。
通常情况下,您会看到:
- someMethod
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
... do stuff ...
id something = [anObject retain];
[pool drain];
return [something autorelease];
}
即。你的游泳池被排干了吗?
(iOS上存在drain
;请参阅the documentation。但是,在所有情况下,最好使用@autoreleasepool{ ... }
;它适用于ARC和MRR。)
答案 1 :(得分:0)
我也有这个问题,第一天我第一个学习如何编码的问题!
我所做的就是彻底删除整行,以:
开头NSAutoreleasepool * pool = [[NSAutoreleasepool alloc] init];
将其替换为:
@autoreleasepool {
然后我删除了程序的底部:
[pool release];
然后用弯曲的括号关闭。
我不知道它为什么会起作用,我的第一天还记得,但它从示例书中运行我的程序。