我可能会过度思考这一点。
// Inside some method...
NSThread *thread = [[NSThread alloc] initWithTarget:functionWrapper selector:@selector(run) object:nil];
[thread start];
在此之后调用[thread release]
:A。避免内存泄漏,是必要的或...... B.会破坏事情。
this question的答案表明线程在执行完毕后会自行释放,但是该行为记录在哪里?
答案 0 :(得分:5)
是的,你必须在一段时间后通过自动释放或释放释放它。
但是,你真的不需要首先创建自己的线程,objective-c有很多方法可以实现线程而无需自己分配新线程,比如
[self performSelectorInBackground:@selector(yourMethod) withObject:nil];
还有一些NSOperations也允许您排队任务。
答案 1 :(得分:2)
作为一般规则:如果您在对象上调用alloc,new或copy,则必须将其释放。
一旦该线程的生命周期完成(或在你的dealloc函数中),请调用[thread release]
。
与您链接的答案存在差异,您会看到他在字符串末尾有自动释放(自动释放是上述规则不适用的实例,在这种情况下,对象将自动在当前主运行循环的结束,以便它对整个当前范围都是活动的。)