阻止不良行为?

时间:2014-03-15 16:43:02

标签: ios objective-c

所以,我有一个实例变量_poze,这是一个NSMutableArray.I有以下代码,我在其中添加对象到我的数组_poze:

for(int i=0;i<[picIDs count];i++){
    str = [NSString stringWithFormat:@"https://graph.facebook.com/%@/picture",picIDs[i]];
    FBRequest *fbr = [FBRequest requestWithGraphPath:picIDs[i] parameters:nil HTTPMedthod:nil];
    [fbr startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError* error){
        NSLog(@"%@",result);
        [_poze addObject:[result valueForKeyPath:@"cover.source"]];
    }];
}

这个问题是,即使我从块中得到结果,数组也会添加对象,但在退出该块之后,我的_poze数组会再次显示0个对象。这就是为什么会发生这种情况的原因?

1 个答案:

答案 0 :(得分:0)

FBRequest完成处理程序与startWithCompletionHandler的调用异步调用。当实际网络请求完成时,将调用完成处理程序块。由于您在紧密循环中创建了大量请求,因此您只需将它们排队。他们甚至不会开始,直到for循环退出并且堆栈展开。

当请求完成时,

_poze将开始填充结果,无论它们完成的顺序如何。