2012-07-04 39 views
0

我目前收到的错误:自动释放与地方没有游泳池 - 刚刚泄露

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

从其他计算器环节的调查,这个问题似乎当人们不线程之前创建一个自动释放池发生选择器并排空后。

但是,我试图容纳这一点,仍然难倒。 我的代码是pastebin。如果任何人都可以帮助它将不胜感激。

感谢

回答

0

你需要的地方的autoreleasepool在main.m文件,否则,试图收到自动释放消息,将“公正泄漏”有没有到位池的任何对象。不幸的是,那个可变数组可能是一个框架对象,所以你的池将无法解决它。

+0

感谢CodaFi,当我在iPhone 4S和iPAD上运行代码(在iOS5上)时,代码不会产生此错误。有任何想法吗? –

+0

你很幸运。 Cocoa-touch希望在后台线程上使用autoreleasepools。 – CodaFi

+0

我明白了,谢谢。您对上述评论中提出的修复建议能否提供意见? –

1

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

你一定明白错了。你不会在原始线程上放置一个自动释放池 - 这是没用的。你应该把它放在新的线程中,只需要在线程中执行的所有代码。就你而言,这意味着在块内部 - 在块体的开始处创建它,并将其排到块体的末端。

+0

谢谢。是的,我是一个iOS新手,所以我误解了。遵循你的建议,我尝试纠正这个问题,包括将autorelease池放置在代码块的顶部(在if(error)之前)并在块的末尾排空池(在accelerometerLabel performSelectorOnMainThread之后)。但是,这并没有解决问题?我是否正确地做。谢谢 –