zoukankan      html  css  js  c++  java
  • 子线程里调用performSelector需要注意什么

    以下代码执行顺序是什么 ?

    - (void)action {

        NSLog(@"1");

        dispatch_queue_t queue = dispatch_get_global_queue(0, 0);

        dispatch_async(queue, ^{

            NSLog(@"3");

            [self performSelector:@selector(test) withObject:nil afterDelay:0.0f];

            NSLog(@"4");

        });

        NSLog(@"2");

    }

     

    - (void)test {

        NSLog(@"5");

    }

    结果

    2019-07-02 09:24:18.492671+0800 ModelTest[12945:510979] 1

    2019-07-02 09:24:18.492776+0800 ModelTest[12945:510979] 2

    2019-07-02 09:24:18.492807+0800 ModelTest[12945:511386] 3

    2019-07-02 09:24:18.493009+0800 ModelTest[12945:511386] 4

    test方法没有调用。因为子线程里runloop默认是关闭的。改为一下代码后

    - (void)action {

        NSLog(@"1");

        dispatch_queue_t queue = dispatch_get_global_queue(0, 0);

        dispatch_async(queue, ^{

            NSLog(@"3");

            [self performSelector:@selector(test) withObject:nil afterDelay:0.0f];

            [[NSRunLoop currentRunLoop]run];

            NSLog(@"4");

        });

        NSLog(@"2");

    }

     

    - (void)test {

        NSLog(@"5");

    }

    结果

    2019-07-02 09:38:40.874213+0800 ModelTest[13094:524707] 1

    2019-07-02 09:38:40.874530+0800 ModelTest[13094:524707] 2

    2019-07-02 09:38:40.874551+0800 ModelTest[13094:524802] 3

    2019-07-02 09:38:43.792863+0800 ModelTest[13094:524802] 5

    2019-07-02 09:38:43.793109+0800 ModelTest[13094:524802] 4

  • 相关阅读:
    分享一个关于Cookie做的实验结果
    使用jest进行单元测试
    【转载】为什么单反镜头做不小,镜头越好越重呢?
    【转载】解读手机摄像头
    【转载】2019中国机器视觉产业全景图谱
    【行业】视觉传感器
    图像质量测评
    COM口了解下
    dbus-python的API及示例
    QtDbus的API及示例
  • 原文地址:https://www.cnblogs.com/huangzs/p/11118584.html
Copyright © 2011-2022 走看看