我有一个使用网络服务从服务器获取数据的 iPhone 应用程序。我将对网络服务的每个调用都放在一个 NSOperation 子类中,以便它可以被线程化。我的问题是,从已完成的 NSOperation 子类传回信息的推荐方法是什么。我目前正在我的主要方法结束时发送一个 NSNotification ,并且任何等待 NSOperation 完成的代码都订阅了通知。然后我将使用 NSNotificationWithName:Object: 的对象部分从操作中传回信息。
我不确定是否有更好的方法来做到这一点。我听说过键值编码,然后我可以使用键值观察来检测操作的 isFinished 属性何时更改,但我不确定最佳实践是什么。
我还试图确保我的应用程序是线程安全的,我认为这不会是一个问题,只要我的通知是在 main 方法结束时发出的,因此通知中的对象将不再被使用在线程中,因为它会结束。
最后,我这样调用通知:
[[NSNotificationCenter defaultCenter] performSelectorOnMainThread:@selector(postNotification:) withObject:[NSNotification notificationWithName:@"notificationName" object:dataObject] waitUntilDone:NO];