了解 dispatch_sync

Understanding dispatch_sync

请考虑以下代码:

- (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?

不输出任何东西

问题出在

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

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

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

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