相关疑难解决方法(0)

iOS - 将块传递给函数

我有一个方法调用(这是来自AFNetworking的调用):

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON)
                                     {
                                         NSLog(@"IP Address: %@", [JSON valueForKeyPath:@"origin"]);

                                     } failure:^(NSURLRequest *request , NSURLResponse *response , NSError *error , id JSON)
                                     {
                                         NSLog(@"Failed: %@",[error localizedDescription]);
                                     }];
Run Code Online (Sandbox Code Playgroud)

我试图把成功和失败的块拉成一个单独的变量,我以后可以将其传递给该方法.但我无法弄清楚如何将块声明为变量.我想做这样的事情:

IDontKnowWhatKindOfDataTypeGoesHere successBlock = ^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON)
{
  NSLog(@"IP Address: %@", [JSON valueForKeyPath:@"origin"]);  
}
Run Code Online (Sandbox Code Playgroud)

和failureBlock一样.

那么我正打算AFJSONRequestOperation像这样打电话:

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:successBlock failure:failureBlock];
Run Code Online (Sandbox Code Playgroud)

但我不知道successBlock和failureBlock的数据类型应该是什么.

我认为这更适合组织.我的successBlock中有很多代码,Xcode推送的自动编码都在屏幕的右侧,这完全令人讨厌.所以如果我能把它拉出来(这应该是可能的,那么),那么我可以更好地组织我的代码.

谢谢!

iphone objective-c objective-c-blocks afnetworking

3
推荐指数
1
解决办法
704
查看次数