Iphone NSA自动释放仪表中的油池泄漏

Iphone NSA自动释放仪表中的油池泄漏,iphone,objective-c,nsautoreleasepool,xcode-instruments,Iphone,Objective C,Nsautoreleasepool,Xcode Instruments,如果以前有人问过这个问题,我真的很抱歉,但是我没有找到一个好的答案 当我运行仪器时,代码中的这一行出现泄漏,而不是main: NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 我一直在四处寻找,并在某个地方读到,这可能是一个错误。有人能帮我和大家分享一下吗 我注意到我的名字和pool基本上是一样的。名字不重要;整个代码库中可能有数百个名为pool的变量。重要的是范围 通常,您会看到: - someMethod {

如果以前有人问过这个问题,我真的很抱歉,但是我没有找到一个好的答案

当我运行仪器时,代码中的这一行出现泄漏,而不是main:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
我一直在四处寻找,并在某个地方读到,这可能是一个错误。有人能帮我和大家分享一下吗


我注意到我的名字和pool基本上是一样的。

名字不重要;整个代码库中可能有数百个名为pool的变量。重要的是范围

通常,您会看到:

- someMethod
{
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
     ... do stuff ...
     id something = [anObject retain];
     [pool drain];
     return [something autorelease];
 }
也就是说,您的游泳池是否正在排水


iOS上存在漏电流;看见然而,在所有情况下,最好使用@autoreleasepool{…};它在ARC和MRR中工作。

我也遇到了这个问题,这是我在学习如何编码的第一天遇到的第一个问题

我所做的只是直接移除整条线路,从以下内容开始:

NSAutoreleasepool*池=[[NSAutoreleasepool alloc]init]

替换为:

@自动释放池{

然后我删除了程序底部的:

[池释放]

然后用弯曲的支架封闭


我不知道它为什么会工作,我记得第一天它运行的是我的示例书中的程序。很好。

你正在清空池吗?比如调用[pool drain];当你完成了巨大的循环或后台线程时?IIRC,drain是Mac版的;它将在iOS中发布。drain是一个很酷的名字:让我们添加一个类别来添加该方法:d