仅在 iOS 4.3 上“自动释放且没有池 - 只是泄漏”

Posted

技术标签:

【中文标题】仅在 iOS 4.3 上“自动释放且没有池 - 只是泄漏”【英文标题】:"autoreleased with no pool in place - just leaking" only on iOS 4.3 【发布时间】:2012-04-11 11:58:34 【问题描述】:

我在控制台中收到了数百条这样的消息:

__NSAutoreleaseNoPool(): Object 0x5d86f30 of class NSIndexPath autoreleased with no pool in place - just leaking

除了更多关于 NSIndexPath 以外的类的消息。

我知道这意味着对象是自动释放的,没有自动释放池来添加它们,但为什么这仅发生在 ios 4.3 而不是 iOS 5.0/.1

如果 main() 的返回值被包裹在 NSAutoreleasePool 对象中,怎么也没有自动释放池来添加自动释放对象?

【问题讨论】:

您是否在非主线程上运行代码? 【参考方案1】:

我不确定这是否是问题所在,但是 main() 中的自动释放池适用于 UIThread(至少在 4.3 中),当您打开另一个线程时,您应该在其周围放置一个新的自动释放池(仅当您使用自动释放)。

【讨论】:

我不知道 main() 中的自动释放池仅适用于 UIThread。非常感谢。我只是想知道它是如何从未出现在 5.0 上的 我认为 5.0 可能已经解决了这个问题,并且自动释放池可能适用于 uithread 的所有子线程。只是一个猜测。

以上是关于仅在 iOS 4.3 上“自动释放且没有池 - 只是泄漏”的主要内容,如果未能解决你的问题,请参考以下文章

在 Mountain Lion 上运行 4.3 版的 iOS 应用程序

NSFetchRequest 控制器在 iOS 5 上工作,在 iOS 4.3 上崩溃

iOS5 情节提要错误:情节提要在 iOS 4.3 及更低版本上不可用

Xcode 4.3 和 iOS 3.x 设备上的调试

iOS 5 MapKit,MKPlacemark,在 iOS 5 上运行 iOS 4.3 应用程序

iOS 4.3 上传视频时崩溃