我有一个简单的应用程序,倒计时到午夜,然后播放蜂鸣声一遍又一遍,并闪烁显示时间的标签。所以标签闪烁使用一个NSTimer,而那张哔在自己的线程,使纯粹的C函数(系统声音ID完成回调)可以使用[NSThread sleepForTimeInterval:...]等一会打起了报警蜂鸣声之间。所以我得到执行过程中说世界上没有自动释放池两个错误消息,这将只是泄漏。它的,因为我调用到一个新的线程的方法,有两个@被用来创建系统声音ID(文件名和扩展名)“琴弦”。有没有一种方法,因为这些都是曾经尝试使用它只有两件事情我不能使用自动释放池。感谢。

或者我应该用两个NSTimers代替另一个线程..?

本戈特利布的回答是正确的,但是我决定用另一种的NSTimer,而不是因为我忘了如何当你睡在一个线程中的代码的实际执行它需要一点时间之前它不是一个真正同步的时间。和它使事情对称;)

有帮助吗?

解决方案

就在你的线程方法创建一个自动释放池:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

...thread body...

[pool release];

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top