我是Obj C的新手(rubyist在这里!)所以我不知道如何解决这个问题。所以我们在我们的app中使用AFNetworking,它通过JSON API与我们的服务器通信。现在看代码,有很多重复,基于我的背景,我有一种不重复的倾向,所以我们的目标是将它重构为一个类。最好的方法是在应用程序范围内包含它,这样我们就可以在需要从服务器中提取内容时访问变量或方法。
无论如何,我们现在所拥有的是这个效果:
AFHTTPRequestManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:'some@email.com' forHTTPHeaderField:@"EMAIL"
...
[manager GET:url parameters:parameters success:^ (AFHTTPRequestOperation *operation, id responseObject) {
// do most of the stuff here
} failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}
这是我们想要尝试制作的方法的基本功能。我们的大多数API调用(在不同的自定义控制器中)都使用此模式。我在想,也许我们可以把它从所有控制器中拉出来,然后用类似getResponseObject
之类的方法将它变成一个类,因为基本上这是我们唯一需要的东西 - 服务器返回的JSON的responseObject。
此外,我们计划将其提供给整个应用,因为大多数应用只是对服务器的API调用。现在我们将它封装到一个自定义类中 - 但我想如果我理解它,每次我们进行API调用时,都会创建/分配该类?是否可以在AppDelegate中创建一个类的单个实例,以便随时可用?
修改的
我们试图将这些方法封装:https://github.com/AFNetworking/AFNetworking/blob/master/AFNetworking/AFHTTPRequestOperationManager.m#L114-L182到一个方法中,将请求类型作为字符串(GET,PUT,POST等)接收。
答案 0 :(得分:1)
我有一个封装了这种功能的ApiConnection对象,然后我需要网络连接的每个元素都使用它。你现在设置的方式应该没问题,每次需要连接时都会分配它。如果你想要,有些人讨厌这个,你可以将它创建为单例,然后你只能在第一次使用时创建实例。我希望有很多"不要不使用单身"响应。