请考虑以下代码:
- (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
之外的任何内容?
答案 0 :(得分:1)
问题在
for (int i; i < 100 ; i++)
对于上面的代码值i = 72339625所以条件不满足而不进入循环
解决方案:初始化i的值,
for (int i = 0 ; i < 100 ; i++)