Bri*_*ian 7 iphone cocoa multithreading cocoa-touch nsoperation
我有一个使用webservices从服务器获取数据的iPhone应用程序.我将每个调用放在一个NSOperation子类中的web服务,以便它可以被线程化.我的问题是,从完整的NSOperation子类传回信息的推荐方法是什么.我目前正在我的main方法结束时发送NSNotification,并且正在等待NSOperation完成的任何代码订阅通知.然后我将使用NSNotificationWithName:Object:的对象部分来从操作中传回信息.
我不确定是否有更好的方法来做到这一点.我听说过Key Value Coding,然后我可以使用Key Value Observing来检测操作的isFinished属性何时被更改,但我不确定最佳做法是什么.
我也试图确保我的应用程序是线程安全的,我认为只要我的通知在main方法结束时发出就不会出现问题,因此通知中的对象将不再使用在线程中它将结束.
最后,我这样称呼通知:
[[NSNotificationCenter defaultCenter] performSelectorOnMainThread:@selector(postNotification:) withObject:[NSNotification notificationWithName:@"notificationName" object:dataObject] waitUntilDone:NO];
Run Code Online (Sandbox Code Playgroud)
Tom*_*ing 16
我个人以两种方式完成了这项工作.两者都运作良好.
第一道路
您可以使用一个返回"输出"的函数,并在操作完成后调用该函数.您可以观察对象isFinished上的键NSOperation,或用于-[NSOperationQueue waitUntilAllOperationsAreFinished]确定操作何时完成.
第二种方式
您可以使用NSOperation中的委托或目标/操作.只需确保在调用委托函数或触发目标/操作时,您可以使用主线程执行此操作-[NSObject performSelectorOnMainThread:withObject:waitUntilDone:]
| 归档时间: |
|
| 查看次数: |
6479 次 |
| 最近记录: |