我应该释放我创build的NSThread吗?

我很可能会推翻这一点。

// Inside some method... NSThread *thread = [[NSThread alloc] initWithTarget:functionWrapper selector:@selector(run) object:nil]; [thread start]; 

在这之后调用[thread release] :A.避免内存泄漏并且是必要的或者… B.将会破坏事物。

这个问题的答案表明,线程在执行完成后会自行释放,但是这个行为在哪里被logging下来呢?

是的,你将不得不在一段时间后释放它,无论是通过自动释放还是释放。

然而,你并不需要首先创build你自己的线程,objective-c有很多方法可以让你自己实现线程而不用分配一个新线程,比如

 [self performSelectorInBackground:@selector(yourMethod) withObject:nil]; 

还有NSOperations允许你排队你的任务。

作为一般规则: 如果你调用alloc,new或copy一个对象,你必须释放它。

一旦该线程的生命周期完成(或在您的dealloc函数中),请调用[thread release]

与你所链接的答案的区别,你会看到他有自动释放在string的末尾(autoreleasing是上述规则不适用的情况下,在这种情况下,对象将自动释放在当前的主运行循环,以使其在整个当前范围内保持活动状态)。