终止子线程(3种方式)
1、线程执行体方法结束 线程正常结束
2、线程执行过程出现了错误
3、直接调用NSThread类的exit方法来终止当前正在执行的线程
子线程启动和主线程拥有相同的地位
测试某个线程是否正在运行 可以调用线程对象的isExecuting(正在执行 返回YES)、isFinished(线程执行完成 返回YES)方法
- (void)viewDidLoad {
[super viewDidLoad];
// 创建新线程对象
thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
// 启动新线程
[thread start];
}
- (void)run{
for (int i = 0; i < 30; i ++) {
if ([NSThread currentThread].isCancelled) {
//终止当前正在执行的线程
[NSThread exit];
}
NSLog(@"---%@---%i", [NSThread currentThread].name, i);
//每一次执行 线程暂停0.5秒
[NSThread sleepForTimeInterval:0.5];
}
}
- (IBAction)cancelThread:(id)sender {
//取消thread线程 调用该方法后 threaad的isCancelled方法将会返回NO
[thread cancel];
}