我已经定义了一个名为'AsyncNetworkOperation'的类,这是NSOperation的子类,用于在我的应用程序中执行数据库查询。我的AsyncNetworkOperation类有一个协议,由启动AsyncNetworkOperation的对象使用:
@protocol AsyncNetworkOperationDelegate
@optional - (void)operationAboutToFinish;
@required - (void)operationFinishedWithData:(id)retrievedData;
@required - (void)operationFinishedWithError:(NSError*)error;
@end
这一切都运行正常,除了我正在回调的委托想要显示UIAlertView,启动NSTimer,或执行辅助线程不应该做的其他事情,或者需要额外努力的情况要做。
所以这是我的问题:当我回调给委托时,我应该通过 - [NSObject performSelectorOnMainThread:]吗?似乎在这样做的过程中,我减轻了代表的负担,不得不知道它是通过辅助线程还是主线程回调,从而允许它以最简单的方式实现功能,没有任何限制。
只是想知道解决这个问题的标准方法。
感谢。
答案 0 :(得分:0)
我建议让AsyncNetworkOperation在调用它的同一个线程中调用委托对象。因此,如果首先在主线程上调用异步操作,那么它应该调用主线程上的委托!
你可以想象未来的使用,代表不需要更新UI,从辅助线程调用它会很好。