如何退出NSThread

我正在使用这样的线程,

[NSThread detachNewThreadSelector:@selector(myfunction) toTarget:self withObject 

线程正常运行,我想退出中间的线程,我该怎么做。如果我使用[NSThread退出]应用程序挂起。

你在哪个线程运行“[NSThread退出]”? [NSThread exit]在当前线程中运行,因此您需要将其作为myfunctionselect器的一部分调用。 如果你在主线程中调用它,它将会退出主线程。

此外,停止这样的线程并不是一个好主意,因为它阻止线程退出清理资源。

myfunction应该根据与协调线程共享的variables退出。

 - (void) myFunction { while([someObject stillWorkToBeDone]) { performBitsOfWork(); } } 

您可以使用“withObject”在协调线程和工作线程之间共享引用。 通过这种方式,协调线程可以更改共享对象中的一个实例variables,以便工作线程可以根据这个条件停止工作。

为了退出工作者线程,协调线程可以像下面这样调用smth:

 [someObject setStillWorkToBeDone:false]; 

你应该打电话

 -[NSThread cancel] 

在你创build的线程上检查

 -[NSThread isCancelled] 

在你的while循环中。