cocoa异步请求 and libxml2.dylib(10)
发布时间:2021-06-07
发布时间:2021-06-07
我们的NSOperation完成了向服务器的请求并将服务器数据下载到成员变量_data中了。现在的问题是,由于这一切是通过异步操作进行的,我们无法取得_data中的数据,因为我们不知道什么时候异步操作完成,以便去访问_data属性(假设我们将_data定义为属性了),取得服务器数据。
我们需要一种机制,当NSOperation完成所有工作之后,通知调用线程。
这里我们想到了KVO编程模型(键-值观察模型)。这是cocoa绑定技术中使用的一种设计模式,它可以使一个对象在属性值发生变化时主动通知另一个对象并触发相应的方法。具体请参考cocoa参考库: /developer/mac/library/documentation/Cocoa/Conceptual/CocoaBindings/index.html,以及
/developer/mac/library/documentation/Cocoa/Conceptual/KeyValueObserving/Concepts/KVOBasics.html#//apple_ref/doc/uid/20002252 两篇文档。
首先,我们在NSOperation的子类中添加一个BOOL变量,当这个变量变为YES时,标志异步操作已经完成:
BOOL _isFinished;
在实现中加入这个变量的访问方法:
- (BOOL)isFinished
{
上一篇:春颂阅读及答案