异步块给出NULL

时间:2016-01-24 09:21:35

标签: objective-c asynchronous block

当我为第一个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
        });
    });

1 个答案:

答案 0 :(得分:1)

您没有初始化arr1以指向实际的数组对象。你只是声明了指针变量,你从来没有把它指向任何东西。默认为nil,所有发送到nil的邮件都会返回nil(或其他适合该类型的零值结果)。

如果您记录了arr1的值,您可能已经发现了这一点。