这是在iOS中处理回调的更好方法

时间:2013-08-20 06:07:29

标签: ios callback nsurlconnection

我创建了一个自定义网络处理程序,用于管理来自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
        }];

感谢。

1 个答案:

答案 0 :(得分:0)

该块将完成代码放在与开始请求的代码相同的上下文中,这使得它更容易阅读并且经常捕获已经初始化的值 - 您需要完成。

如果您选择目标/选择器方法according to this,则可以通过llvm> = 3来解决警告问题。 (请参阅页面上的高度评价的答案)。