在没有游泳池的情况下自动释放 - 只是泄漏

时间:2012-07-04 16:56:24

标签: objective-c ios xcode autorelease

我目前收到错误:

2000-01-03 06:51:27.-641 mytestapp[470:5c03
] *** __NSAutoreleaseNoPool(): Object 0x15a5a0 
of class __NSArrayM >autoreleased with no pool in place - just leaking

从其他stackoverflow链接的调查来看,当人们不在线程选择器之前创建自动释放池并将其耗尽之后,似乎会出现此问题。

然而,我试图容纳这一点,但仍然感到难过。 我在pastebin上有代码。如果有人能提供帮助,我们将不胜感激。

由于

2 个答案:

答案 0 :(得分:1)

“在线程选择器之前创建一个自动释放池并在”什么?之后将其排空?你在哪里听说过这个?

你一定明白错了。你没有在原始线程上放置自动释放池 - 这没用。你应该把它放在新线程中,就在将在线程中执行的所有代码周围。在你的情况下,这意味着在块内部 - 在块的主体的开头创建它,并将其排放到块体的末端。

答案 1 :(得分:0)

你需要在main.m中使用autoreleasepool,否则任何试图接收自动释放消息的对象都会“泄漏”而没有池。不幸的是,这个可变数组可能是一个框架对象,所以你的池无法解决它。