2013-08-20 79 views
0

我已經創建了一個自定義網絡處理程序來管理來自應用程序的所有服務器調用。這在內部使用NSURLConnection並在完成數據提取後回調函數塊。目前我可以設置回調方法或回調CodeBlock。我想了解哪一個更好,爲什麼。哪種方法更好地處理iOS中的回調

選項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

該塊將完成代碼放置在與開始請求的代碼相同的上下文中,這使得它更易於閱讀並且經常捕獲已經初始化的值 - 您需要完成。

如果您選擇目標/選擇器方法according to this,則可以在llvm> = 3中解決警告。 (請參閱頁面上的高度回覆的答案)。