2

我有一个 Web API 类,它处理我项目中的所有网络通信和下载。我的项目包含集合视图和表格视图,只要下载完成,它们就会更新。

我处理这个问题的方式感觉很丑。

我将对我的集合视图/表视图的引用传递给WepAPI.m中的方法。每当下载完成时,我都会使用引用将新对象插入到我的视图中并发送重新加载消息。

这是要走的路吗?我应该改用KVO还是其他方法?

我正在使用AFNetworking框架来处理我的网络通信

4

2 回答 2

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
}

这可确保您所做的视图更改在其相应的视图控制器中完成。

于 2013-07-15T06:56:17.940 回答
0

一个简单的模式应该是使用两个单例:

  • 一个 ConnectionManager,它处理身份验证、超时、解析、
  • 一个 DataManager,它要求 ConnectionManager 获取端点并存储解析的结果。

然后,您可以使用 KVO(或 NSNotifications)来监听 DataManager 单例的任何更新。

这种做事方式非常简单,并且为所涉及的每个组件提供了相当多的可重用性。

于 2013-07-15T06:56:13.213 回答