我应该发布我创建的NSThread吗?

Ben*_*ynn 1 memory-management objective-c ios

我可能会过度思考这个问题.

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

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

这个问题的答案表明线程在完成执行时会自行释放,但是这种行为记录在哪里?

fut*_*te7 5

是的,你必须通过autorelease或release释放它.

但是,你真的不需要首先创建自己的线程,objective-c有很多方法可以实现线程而无需自己分配新线程,比如

[self performSelectorInBackground:@selector(yourMethod) withObject:nil];
Run Code Online (Sandbox Code Playgroud)

还有NSOperations也允许您排队任务.