美文网首页iOS开发程序员iOS Developer
- (void)performSelectorOnMainThr

- (void)performSelectorOnMainThr

作者: LeeDev | 来源:发表于2017-02-16 11:23 被阅读76次

    一个例子解释这个方法的意思
    performSelectorOnMainThread:回到主线程
    waitUntilDone:这个意思看下面的例子

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
           
            NSLog(@"线程1 start");
            
            /**
             回到主线程
             waitUntilDone:YES:必须执行完主线程才能往下走
                             NO:不需要执行完主线程,可以先往下走
             */
            [self performSelectorOnMainThread:@selector(test1) withObject:nil waitUntilDone:NO];
            NSLog(@"线程1 end");
        });
    }
    
    - (void)test1 {
        
        sleep(1);
        NSLog(@"主线程 结束");
    }
    

    当 waitUntilDone:NO
    打印的结果:
    2017-02-16 11:16:33.837 Test[1189:30481] 线程1 start
    2017-02-16 11:16:33.838 Test[1189:30481] 线程1 end
    2017-02-16 11:16:34.872 Test[1189:30426] 主线程 tes1
    当 waitUntilDone:YES
    2017-02-16 11:21:29.292 Test[1242:32960] 线程1 start
    2017-02-16 11:21:30.364 Test[1242:32922] 主线程 结束
    2017-02-16 11:21:30.365 Test[1242:32960] 线程1 end

    一幕了然,其实当waitUntilDone:YES ,是用到了 RunLoop的知识,让其一直在等待 直到完成,才往下走。

    相关文章

      网友评论

        本文标题:- (void)performSelectorOnMainThr

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