我有一个 Web API 类,它处理我项目中的所有网络通信和下载。我的项目包含集合视图和表格视图,只要下载完成,它们就会更新。
我处理这个问题的方式感觉很丑。
我将对我的集合视图/表视图的引用传递给WepAPI.m中的方法。每当下载完成时,我都会使用引用将新对象插入到我的视图中并发送重新加载消息。
这是要走的路吗?我应该改用KVO还是其他方法?
我正在使用AFNetworking框架来处理我的网络通信
我有一个 Web API 类,它处理我项目中的所有网络通信和下载。我的项目包含集合视图和表格视图,只要下载完成,它们就会更新。
我处理这个问题的方式感觉很丑。
我将对我的集合视图/表视图的引用传递给WepAPI.m中的方法。每当下载完成时,我都会使用引用将新对象插入到我的视图中并发送重新加载消息。
这是要走的路吗?我应该改用KVO还是其他方法?
我正在使用AFNetworking框架来处理我的网络通信
我会使用积木。
例如:(在 WebAPI.h 中)
typedef void (^SomeStuffBlock)(id someStuff);
- (void)getSomeStuffWithCompletion: (SomeStuffBlock)completion;
使用单例,以便下载器保留在内存中。(把它放在你的 WebAPI.m 中)
+ (id)sharedInstance {
static dispatch_once_t once;
static id sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
调用将是这样的:
[[WebAPI sharedInstance] getSomeStuffWithCompletion: ^ (id someStuff) {
//Make changes to your views here
}
这可确保您所做的视图更改在其相应的视图控制器中完成。
一个简单的模式应该是使用两个单例:
然后,您可以使用 KVO(或 NSNotifications)来监听 DataManager 单例的任何更新。
这种做事方式非常简单,并且为所涉及的每个组件提供了相当多的可重用性。