【发布时间】:2010-01-19 20:00:15
【问题描述】:
我定义了一个名为“AsyncNetworkOperation”的类,它是 NSOperation 的子类,用于在我的应用程序中执行数据库查询。我的 AsyncNetworkOperation 类有一个协议,供启动 AsyncNetworkOperation 的对象使用:
@protocol AsyncNetworkOperationDelegate
@optional - (void)operationAboutToFinish;
@required - (void)operationFinishedWithData:(id)retrievedData;
@required - (void)operationFinishedWithError:(NSError*)error;
@end
这一切都很好,除非我要回调的委托想要显示 UIAlertView、启动 NSTimer 或执行辅助线程不应该执行的其他操作,或者需要额外的努力去做。
所以这是我的问题:当我回调委托时,我应该通过 -[NSObject performSelectorOnMainThread:] 这样做吗?这样做似乎可以让我的委托从必须知道它是通过辅助线程还是主线程回调的负担中解脱出来,从而允许它以最直接的方式实现功能,没有任何限制。
只是想知道解决这个问题的标准方法。
谢谢。
【问题讨论】:
标签: iphone multithreading