0

我有一个简单的应用程序,它倒计时到午夜,然后一遍又一遍地播放哔哔声,并闪烁显示时间的标签。所以标签闪烁使用了一个NSTimer,而哔哔声在自己的Thread上进行,这样纯C函数(用于系统声音id完成回调)可以使用[NSThread sleepForTimeInterval:...]; 在播放警报哔声之间稍等片刻。所以我在执行过程中收到两条错误消息,说没有自动释放池,它只会泄漏。这是因为在我调用新线程的方法中,有两个 @"Strings" 用于创建系统声音 ID(文件名和扩展名)。有没有办法我不能使用自动释放池,因为这是唯一尝试使用它的两件事。谢谢。

或者我应该使用两个 NSTimers 而不是另一个线程..?

Ben Gottlieb 的回答是正确的,但是我决定改用另一个 NSTimer,因为我忘记了它是如何与你睡眠线程的时间不真正同步的,因为它需要一些时间才能真正执行代码。它使事情对称;)。

4

1 回答 1

2

只需在您的线程方法中创建一个自动释放池:

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

...thread body...

[pool release];

于 2009-10-01T01:40:14.180 回答