发送到主线程时,NSMutableArray变为nil

时间:2011-12-22 17:01:10

标签: ios multithreading nsmutablearray null

我在后台线程上有一个如下所示的函数:

NSMutableArray *descriptions = [[NSMutableArray alloc] init];
NSString *description = [flickrFetcher descriptionForPhotoID:[[photos objectAtIndex:i] objectForKey:@"id"]];
    if ([description length] == 0) {
        description = @"No description available.";
    }
[descriptions addObject:description];
NSLOg(@"descriptions:%@.", descriptions);
[target performSelectorOnMainThread:action withObject:descriptions];

行动中:

NSLog(@"description now is:%@.", descriptions");

日志:

    Descriptions:2011-12-22 15:13:29.265 Paparazzi[3683:11903] (
    "No description available.",
    "No description available.",
    "No description available.",
    "No description available.",
     "No description available.",
     "No description available.",
    "No description available.",
    "No description available.",
    "This is a photo of just the eyes of an image I created by editing Apple's snow leopard image. I call the whole image \"Thermal Leopard\"."
).

descriptions:(null).

在该函数中,描述(数组)总是以nil结尾。为什么会这样?

编辑1:

第二次调用这个函数时,数组不是nil,并且每个东西都按预期工作。这是第一次调用此代码。此外,它在主线程动作方法中仅为零,而不是在上面显示的代码中。

编辑2:

这是一个错误吗?我应该把它提交给Apple吗? 我认为这可能不是我的错,如果我能得到关于这是一个错误的建议,那将是非常好的。

1 个答案:

答案 0 :(得分:0)

我弄明白了这个问题。在动作方法的某个地方,我发现我将描述设置为nil。非常感谢大家的帮助。我赞同你所有的答案和评论,谢谢你。