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