-1

我正在按照这个答案来测试我在类中定义的异步方法。但是我无法为其添加完成处理程序定义。有什么帮助吗?

我得到了一个定义如下的方法:

//.h
- (void)loadData;

//.m   
 - (void)loadData{
        NSString *urlString =
    [NSString stringWithFormat:@"www.example.com/json", kResultsLimit ];
    NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [NSURLConnection sendAsynchronousRequest:request
                                       queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {

                           }
    }];

我现在想在 loadData 方法定义中添加一个完成处理程序。如何在 .h 和 .m 文件中添加它?

.h 的示例:

        - (void)loadData+completionhandler;
4

2 回答 2

3

@AdamPro13 为您提供了如何执行此操作的示例。

我的猜测是,您正在为如何定义一个将块作为参数的方法而苦苦挣扎。这很令人困惑。

我使用这个站点(具有较少的 SFW URL 名称)来找出在不同情况下使用块的语法:

GoshDarnLink 语法

对你来说关键是这部分:

将块作为方法参数传递:

- (void)someMethodThatTakesABlock:(returnType (^)(parameterTypes))blockName;
于 2015-02-12T02:59:59.103 回答
1

像这样声明它.h- (void)loadDataWithCompletion:(void(^)(id))completion;.

然后,您可以在该网络请求的完成处理程序中调用它completion(data);

于 2015-02-12T02:29:18.943 回答