我创建了一个自定义网络处理程序,用于管理来自Application的所有服务器调用。这在内部使用NSURLConnection并在数据提取完成后回调函数块。当前我可以设置回调方法或回调CodeBlock。我想了解哪一个更好,为什么。
选项1:
BaseNetworkHelper * helper = [[BaseNetworkHelper alloc] initWithURL:@"request/url/as/string" action:@"action/for/request" params:params];
[helper addFinishAction:self sel:@selector(markReadFinished:)];
这样我在操作完成后调用回调方法时会收到ARC警告。像吼叫一样。
if (_target) {
if ([_target respondsToSelector:selector]) {
[_target performSelector:selector withObject:rdata];
}
}
选项2:
BaseNetworkHelper * helper = [[BaseNetworkHelper alloc] initWithURL:@"request/url/as/string" action:@"action/for/request" params:params];
[helper startDownload:^(NSData *data, NSError *error) {
// Business logic for response handling / error handling
}];
感谢。
答案 0 :(得分:0)
该块将完成代码放在与开始请求的代码相同的上下文中,这使得它更容易阅读并且经常捕获已经初始化的值 - 您需要完成。
如果您选择目标/选择器方法according to this,则可以通过llvm> = 3来解决警告问题。 (请参阅页面上的高度评价的答案)。