当我为第一个for循环设置了一个断点时,我注意到它正在执行,但是这个值没有被更新为字符串“Viki”。相反,它只是NULL。异步块给NULL
另外,代码NSLog(@"Mahal");
的最后一行未被执行。为什么?
NSMutableArray *arr1;
for(int i=0; i<3; i++)
{
[arr1 addObject:@"Viki"];
}
NSLog(@"Hello");
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"Taj");
for(int i=0; i<3; i++)
{
NSLog(@"%@", [arr1 objectAtIndex:i]);
}
dispatch_sync(dispatch_get_main_queue(), ^{ // 2
NSLog(@"Mahal"); // 3
});
});
用下面的代码替换第一行的代码: NSMutableArray * arr1 = [[NSMutableArray alloc] init]; –
@BabuLal另外,最后一行NSLog(@“Mahal”);没有被执行。你能告诉我为什么? – Viki
您应该使用dispatch_async而不是dispatch_sync。 –