哪一个更好的将AFNetworking功能包装在一个文件中或在单独的文件中使用它,

时间:2015-04-27 01:59:54

标签: ios coding-style afnetworking

我使用AFNetworking作为网络库。有两种不同的编码风格,我不知道哪一种更好。

  1. 将与网络关联的所有功能包装到一个文件中。 例如,我有一个名为API.m的单例文件,我将login函数包装成如下:

    - (void) login:(NSString *)username withPassword:(NSString *)password
      andCompletionBlock:(void(^)(NSString*))block andFailBlock:(void(^)())failBlock
    {
      NSMutableString *url = [[NSMutableString alloc] initWithCapacity:10];
      [url appendString:LOGINURL];
    
      NSURL* nurl = [NSURL URLWithString:url];
      NSURLRequest *request = [NSURLRequest requestWithURL:nurl];
      AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
      [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
      NSString *requestTmp = [NSString stringWithString:operation.responseString];
        block(requestTmp);
      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        failBlock();
      }];
      [operation start];
    }
    
  2. 然后在LoginViewController中,我可以调用此函数来执行我的登录工作:

        [[ServerAPI Instance] login:@"hello" withPassword:@"world" 
        andCompletionBlock:^(NSString *str) {} failBlock^(){}];
    
    1. 直接在单独的视图控制器中编写网络流程代码。
    2. 哪一个是更好的编码风格?

1 个答案:

答案 0 :(得分:0)

创建单独的模型来处理API层总是比在视图控制器中编写网络代码更好。当您想在多个地方使用相同的网络呼叫时尤其如此。

话虽如此,可能有更好的方式来编写您的网络,而不是一揽子,多用途的单身人士。考虑创建单个模型,例如User模型,其实例表示已登录User,并且还具有登录,注销,凭据保存,刷新等方便的方法。因此,您保持代码与用户相关在用户类中。