iOS线程保活

通过在RunLoop添加NSMachPort port,(添加Source Timer Observe),线程就会进入休眠

 NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
    // 往RunLoop里面添加Source\Timer\Observer,Port相关的是Source1事件
    //添加了一个Source1,但是这个Source1也没啥事,所以线程在这里就休眠了,不会往下走,----end----一直不会打印
        [runLoop addPort:[NSMachPort port] forMode:NSRunLoopCommonModes];
        [runLoop run];

对保活的线程进去回收

停止RunLoop

/ 设置标记为NO
    self.stopped = YES;
    // 停止RunLoop
    CFRunLoopStop(CFRunLoopGetCurrent());
    [self.thread cancel];
//解决循环引用问题
    self.thread = nil;
    NSLog(@"%s %@", __func__, [NSThread currentThread]);

版权声明:本文为YRH930718原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。