了解dispatch_sync

时间:2016-01-26 13:17:24

标签: ios objective-c grand-central-dispatch

请考虑以下代码:

- (void)viewDidLoad {
    [super viewDidLoad];

    dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{


        for (int i; i < 100 ; i++) {

            NSLog(@"%i", i);

        }

    });

    NSLog(@"Main thread code");

}

为什么它的唯一输出是 - 2016-01-26 16:15:28.842 Test[1051:35933] Main thread code

我的意思是,全局队列中的代码永远不会执行,为什么?我只希望它同步执行。当然我可以轻松写dispatch_async,但我只是好奇为什么上面的代码不起作用,不会输出除2016-01-26 16:15:28.842 Test[1051:35933] Main thread code之外的任何内容?

1 个答案:

答案 0 :(得分:1)

问题在

for (int i; i < 100 ; i++) 

对于上面的代码值i = 72339625所以条件不满足而不进入循环

解决方案:初始化i的值,

for (int i = 0 ; i < 100 ; i++)