当我为第一个for循环设置断点时,我注意到它正在被执行但是值没有被更新为字符串“Viki”。相反,它只是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
});
});
答案 0 :(得分:1)
您没有初始化arr1
以指向实际的数组对象。你只是声明了指针变量,你从来没有把它指向任何东西。默认为nil
,所有发送到nil
的邮件都会返回nil
(或其他适合该类型的零值结果)。
如果您记录了arr1
的值,您可能已经发现了这一点。