【发布时间】:2011-11-17 03:48:55
【问题描述】:
我有一个 Quartz Composer 的自定义补丁,它是一个多播接收器。它为守护进程启动一个 NSThread,然后在用户更改多播地址或端口号时重新启动它。
当补丁启动时,我会执行以下操作来启动一个新线程。
daemonThread = [NSThread alloc];
然后,每次我启动或重新启动线程时,我都会重新初始化它:
[daemonThread initWithTarget:multicastDaemon selector:@selector(doWorkWithDelegate:) object:self];
[daemonThread start];
当然,我每次在重新启动线程之前都会终止它。我没有使用垃圾收集,当补丁退出时我确实释放了 daemonThread。
我担心的是,当我像这样一遍又一遍地重新初始化这个线程时,我不确定会发生什么。我注意到 Instruments 告诉我我正在泄漏一个 NSThread 和一个 autoreleasepool,我怀疑这可能是我来自守护线程的池。我可以看到每次我重新启动该过程时这些数字都会增加,但我对 Instruments 不够熟悉,不知道它告诉我什么。
我应该担心吗?
【问题讨论】:
标签: objective-c memory-leaks nsthread nsautoreleasepool