Obj-C:接受块体作为方法参数

时间:2013-05-27 15:32:53

标签: objective-c block

Obj-C的新功能,我试图理解如何从方法参数接受块并传递给另一个方法。

所以,假设我有一个可以从JSON加载数据的基本对象(继承自NSObject)。它有这样的方法:

- (void)loadDataFromJSON
{
  NSMutableURLRequest *request = [http requestWithMethod:@"GET" path:MY_PATH parameters:MY_PARAMS];

  AFJSONRequestOperation *operation =
  [AFJSONRequestOperation JSONRequestOperationWithRequest:request
                                                  success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
                                                    NSLog(@"success: %@",JSON);
                                                  }
                                                  failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
                                                    NSLog(@"failure: %@",JSON);
                                                  }];

}

现在,如果我在View Controller中使用此对象,我想让它加载其数据,然后我想查看它,只有在加载数据之后。我想做的是将成功和失败块作为loadDataFromJSON方法的参数并将它们传递给JSONRequestOperationWithRequest:success:failure调用,但我不明白这样做的语法。

我试过了:

- (void)loadDataFromJSONWithSuccess:(^)successBlock failure:(^)failureBlock;

这不起作用,XCode说它需要一种类型。那么我怎么告诉它类型是一个传递给JSONRequestOpertation...的块?

1 个答案:

答案 0 :(得分:2)

- (void)loadDataFromJSONWithSuccess:(void(^)())successBlock failure:(void(^)())failureBlock;