哪个更好地将 AFNetworking 函数包装在一个文件中或在单独的文件中使用它,
which one is better to wrap AFNetworking functions in one file or use it in separate files,
我正在使用 AFNetworking 作为网络库。有两种不同的编码风格,我不知道哪种更好。
将所有与网络关联的函数打包到一个文件中。
例如,我有一个名为 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];
}
然后在LoginViewController
,我可以调用这个函数来完成我的登录工作:
[[ServerAPI Instance] login:@"hello" withPassword:@"world"
andCompletionBlock:^(NSString *str) {} failBlock^(){}];
- 直接在单独的视图控制器中编写网络进程代码。
哪种编码风格更好?
创建单独的模型来处理您的 API 层总是比在视图控制器中编写网络代码要好。当您想在多个地方使用相同的网络调用时尤其如此。
话虽如此,可能有更好的方式来编写您的网络,而不是笼统的、多用途的单例。考虑创建单独的模型,例如 User
模型,其实例表示已登录 User
,并且还具有用于登录、注销、凭据保存、刷新等的便捷方法。因此,您可以使代码与用户相关在用户 class.
中
我正在使用 AFNetworking 作为网络库。有两种不同的编码风格,我不知道哪种更好。
将所有与网络关联的函数打包到一个文件中。 例如,我有一个名为 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]; }
然后在LoginViewController
,我可以调用这个函数来完成我的登录工作:
[[ServerAPI Instance] login:@"hello" withPassword:@"world"
andCompletionBlock:^(NSString *str) {} failBlock^(){}];
- 直接在单独的视图控制器中编写网络进程代码。
哪种编码风格更好?
创建单独的模型来处理您的 API 层总是比在视图控制器中编写网络代码要好。当您想在多个地方使用相同的网络调用时尤其如此。
话虽如此,可能有更好的方式来编写您的网络,而不是笼统的、多用途的单例。考虑创建单独的模型,例如 User
模型,其实例表示已登录 User
,并且还具有用于登录、注销、凭据保存、刷新等的便捷方法。因此,您可以使代码与用户相关在用户 class.