0

我创建了一个自定义网络处理程序,用于管理来自应用程序的所有服务器调用。这在内部使用 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
        }];

谢谢。

4

1 回答 1

0

该块将完成代码放置在与开始请求的代码相同的上下文中,这样更易​​于阅读,并且通常会捕获您在完成时需要的值(已经初始化)。

如果您选择目标/选择器方法,根据 this,有一种方法可以解决 llvm >=3 中的警告。(请参阅页面下方高度赞成的答案)。

于 2013-08-20T06:17:13.290 回答