仅在 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 及更低版本上不可用