使用块的范围内的对象设置块范围之外的对象

时间:2011-06-12 00:54:55

标签: iphone objective-c objective-c-blocks

如何在块范围内设置一个对象,并且在块的范围内设置一个对象?

我的代码目前是这样的,但是当我打电话给NSLog(@"%d", [self publicFeed] count])时它不起作用。

- (NSArray *) publicFeed {
    __block NSArray *returns = nil;
    [[APIRequester sharedRequester] getPublicFeedCompletion:^(NSArray *array) {
        returns = array;
    } fail:^(NSError *error) {

    }];
    return returns;
}

1 个答案:

答案 0 :(得分:3)

这是问题所在。这些块按照您的预期调用,但这就是:

  1. returns声明为数组。
  2. 致电-[APIRequester getPublicFeedCompletion:fail:]
  3. 方法返回returnsnil) 〜〜〜〜〜
  4. 将来的某个时间,returns设置为array
  5. 您必须以某种方式更改代码,以确保在方法返回之前设置returns