代码之家  ›  专栏  ›  技术社区  ›  mk12

iPhone开发人员多线程、NSAutoreleasePool

  •  0
  • mk12  · 技术社区  · 17 年前

    我有一个简单的应用程序,它可以倒计时到午夜,然后反复播放嘟嘟声,并闪烁显示时间的标签。因此,标签闪烁使用NSTimer,而嘟嘟声在其自己的线程上进行,因此纯C函数(用于系统声音id完成回调)可以使用[NSThread sleepForTimeInterval:…];在播放报警蜂鸣声之间等待一段时间。所以我在执行过程中收到两条错误消息,说没有自动释放池,它只会泄漏。这是因为在我调用新线程的方法中,有两个@“字符串”用于创建系统声音ID(文件名和扩展名)。有没有一种方法我不能使用自动释放池,因为只有这两件事我尝试过使用它。谢谢

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

    Ben Gottlieb的回答是正确的,但是我决定使用另一个NSTimer来代替,因为我忘记了它是如何在需要一点时间之前真正同步到睡眠线程作为代码实际执行的时间的。它使事物对称;)。

    1 回复  |  直到 17 年前
        1
  •  2
  •   Ben Gottlieb    17 年前

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

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

    …线体。。。