iphone - 如何退出 NSThread

标签 iphone objective-c ios nsthread

我正在使用这样的线程,

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

线程运行正常,我想中途退出线程,怎么办。如果我使用[NSThread exit]应用程序挂了。

最佳答案

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

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

myfunction 应该基于与协调线程的共享变量退出。

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

您可以使用“withObject”在协调线程和工作线程之间共享引用。这样,协调线程可以更改共享对象中的实例变量,以便工作线程可以根据这种情况停止工作。

要退出工作线程,协调线程会像这样调用 smth:

[someObject setStillWorkToBeDone:false];

关于iphone - 如何退出 NSThread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/909283/

相关文章:

ios - 签署 iOS 应用程序 : App ID Cannot be Registered to Your Development Team

iphone - 以编程方式获取来电号码

ios - 如何在应用程序中保存用户信息

iphone - Objective-C - UserDefaults 覆盖

objective-c - [NSFont systemFontOfSize] 内存需要释放吗

objective-c - 通过 Web 服务将持久项目上传到磁盘

ios - 使用本地镜像文件时清除 UIWebView 缓存

ios - 如何播放嵌入在 UIView 中的视频?

iphone - 在iphone中设置Textview的位置

ios4 - iPhone 应用程序中的谷歌 Adsense