仅在 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 上“自动释放且没有池 - 只是泄漏”的主要内容,如果未能解决你的问题,请参考以下文章