这就是我创建线程的方式:
readFromWebThread = [[NSThread alloc] initWithTarget:self selector:@selector(loadThread:) object:urlStr];
这就是我阻止它的方式:
if ([readFromWebThread isExecuting]) {
[readFromWebThread cancel];
}
这就是我在线程中所讲的:
-(void)loadThread:(NSString*)urlStr {
while (YES) {
//MyStuff
[NSThread sleepForTimeInterval:kSleepBetweenLoading];
}
}
问题是,即使调用cancel线程方法,该线程也会继续调用。
知道是什么错误吗?
最佳答案
从文档:
-cancel:“更改接收器的取消状态以指示它应该退出。”
==>您必须实现线程的取消!如果它入睡,它永远不会被取消
例如
while(YES) {
//do a piece of work
if([NSThread currentThread].state == canceled)
break;
}