我有一个Web API类,可以处理项目中的所有网络通信和下载。我的项目包含集合视图和表视图,每当下载完成时都会更新。
我处理这件事的方式感觉很难看。
我将对集合视图/表视图的引用传递给 WepAPI.m 中的方法。 每当下载完成时,我都会使用引用将新对象插入到我的视图中并发送重新加载消息。
这是要走的路吗?我应该使用 KVO 或其他方法吗?
我正在使用 AFNetworking 框架来处理我的网络通讯
答案 0 :(得分:2)
我会使用积木。
例如:(在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
}
这可确保您在相应的视图控制器中完成所做的视图更改。
答案 1 :(得分:0)
一个简单的模式应该是使用两个单身人士:
然后,您可以使用KVO(或NSNotifications)收听DataManager单例的任何更新。
这种做事方式很简单,并且为每个相关组件提供了相当多的可重用性。