使用主线程而不是辅助线程回调委托?

时间:2010-01-19 20:00:15

标签: iphone multithreading

我已经定义了一个名为'AsyncNetworkOperation'的类,这是NSOperation的子类,用于在我的应用程序中执行数据库查询。我的AsyncNetworkOperation类有一个协议,由启动AsyncNetworkOperation的对象使用:

@protocol AsyncNetworkOperationDelegate
@optional - (void)operationAboutToFinish;
@required - (void)operationFinishedWithData:(id)retrievedData;
@required - (void)operationFinishedWithError:(NSError*)error;
@end

这一切都运行正常,除了我正在回调的委托想要显示UIAlertView,启动NSTimer,或执行辅助线程不应该做的其他事情,或者需要额外努力的情况要做。

所以这是我的问题:当我回调给委托时,我应该通过 - [NSObject performSelectorOnMainThread:]吗?似乎在这样做的过程中,我减轻了代表的负担,不得不知道它是通过辅助线程还是主线程回调,从而允许它以最简单的方式实现功能,没有任何限制。

只是想知道解决这个问题的标准方法。

感谢。

1 个答案:

答案 0 :(得分:0)

我建议让AsyncNetworkOperation在调用它的同一个线程中调用委托对象。因此,如果首先在主线程上调用异步操作,那么它应该调用主线程上的委托!

你可以想象未来的使用,代表不需要更新UI,从辅助线程调用它会很好。