我如何 support/add 我的异步方法的完成处理程序?
How do I support/add a completion handler to my asynchronous method?
我正在关注 this answer 以测试我在 class 中定义的异步方法。但是我无法向其添加完成处理程序定义。有帮助吗?
我得到一个定义如下的方法:
//.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;
像这样在您的 .h
中声明它:- (void)loadDataWithCompletion:(void(^)(id))completion;
。
然后您可以使用 completion(data);
在该网络请求的完成处理程序中调用它
@AdamPro13 给你一个如何做的例子。
我的猜测是您正在为如何定义一个将块作为参数的方法而苦恼。令人困惑。
我使用这个站点(名称较少的 SFW URL)来弄清楚在不同情况下使用块的语法:
你的关键是这部分:
将块作为方法参数传递:
- (void)someMethodThatTakesABlock:(returnType (^)(parameterTypes))blockName;
我正在关注 this answer 以测试我在 class 中定义的异步方法。但是我无法向其添加完成处理程序定义。有帮助吗?
我得到一个定义如下的方法:
//.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;
像这样在您的 .h
中声明它:- (void)loadDataWithCompletion:(void(^)(id))completion;
。
然后您可以使用 completion(data);
@AdamPro13 给你一个如何做的例子。
我的猜测是您正在为如何定义一个将块作为参数的方法而苦恼。令人困惑。
我使用这个站点(名称较少的 SFW URL)来弄清楚在不同情况下使用块的语法:
你的关键是这部分:
将块作为方法参数传递:
- (void)someMethodThatTakesABlock:(returnType (^)(parameterTypes))blockName;