美文网首页
子线程(NSThread)的注意点

子线程(NSThread)的注意点

作者: 健了个平_24 | 来源:发表于2020-02-04 16:10 被阅读0次
    子线程的主任务一旦执行完毕,生命周期就结束了,即使是被强指针引用着,也无法再使用,跟僵尸差不多了。
    self.thread = [[NSThread alloc] initWithBlock:^{
        // 主任务。
    }]; 
       
    [self.thread start];
    // 子线程先执行主任务,执行完就会退出,虽然self.thread这个对象没死,但已经废了,不会再执行其他任务。
    
    // 子线程都废了,再执行下面这句代码已经无效了
    // 注意:waitUntilDone为YES就会崩溃,因为目标线程已经退出,根本不可能等到任务执行完
    [self performSelector:@selector(test) onThread:self.thread withObject:nil waitUntilDone:NO]; 
    
    • 除非启动子线程的RunLoop,保持线程的活跃状态(子线程的RunLoop默认是没有启动的)。

    相关文章

      网友评论

          本文标题:子线程(NSThread)的注意点

          本文链接:https://www.haomeiwen.com/subject/pxnrxhtx.html