如何在变量/对象更改iPhone上的值时调用方法/选择器

时间:2010-09-18 08:37:31

标签: iphone objective-c binding asynchronous singleton

我正在寻找一种方法来“监视/观察”我用来从异步http请求传回信息的单例类。我希望在收到并解析响应后更新UI。由于iPhone SDK没有NSArrayController来监控单例中的数据,我该如何进行异步UI更新?

这就是我将逻辑分开的方式:

单例: (保持带数据的数组)

RESTClient实现: 从远程服务检索xml并以单例

保存到数组

的ViewController: 需要监控单例数据的更改并通过函数

更新UI

提前谢谢你:)

1 个答案:

答案 0 :(得分:2)

虽然iOS没有NSArrayController,但它确实拥有构建于顶层的所有技术。具体来说,这是键值绑定和更基本的键值观察。后者应该是您的首选工具。这很容易做到:

1)以观察者身份注册您的控制器,如下:

[singleton addObserver:self forKeyPath:@"myData" options:0 context:@"data"];

2)观察所有变化:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if (context == @"data") {
        // Do whatever you need to do...
    }
    else {
        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    }
}