首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取消NSThread

取消NSThread
EN

Stack Overflow用户
提问于 2014-01-23 13:19:55
回答 2查看 233关注 0票数 0

我就是这样创建线程的:

代码语言:javascript
复制
readFromWebThread = [[NSThread alloc] initWithTarget:self selector:@selector(loadThread:) object:urlStr];

我就是这样阻止它的:

代码语言:javascript
复制
if ([readFromWebThread isExecuting]) {
    [readFromWebThread cancel];
}

这就是我在这个帖子中所表现出来的:

代码语言:javascript
复制
-(void)loadThread:(NSString*)urlStr {
    while (YES) {
        //MyStuff

        [NSThread sleepForTimeInterval:kSleepBetweenLoading];
    }
}

问题是,甚至调用线程一直调用的cancel线程方法。你知道什么是错误吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-23 13:47:04

从医生那里:

-cancel:“更改接收方被取消的状态以指示它应该退出。”

==>您必须实现线程的取消!如果它睡着了,它就永远不会被取消

例如:

代码语言:javascript
复制
while(YES) {
    //do a piece of work
    if([NSThread currentThread].state == canceled)
        break;
}
票数 1
EN

Stack Overflow用户

发布于 2014-01-23 13:48:19

-cancel只是设置了一个标志。你得检查旗子。

代码语言:javascript
复制
while (!self.isCancelled) {
    // MyStuff
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21309373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档