Я определил класс под названием «AsyncNetworkOperation», подкласс NSOperation, используемый для выполнения запросов к базе данных в моем приложении. Мой класс AsyncNetworkOperation имеет протокол, который будет использоваться объектами, которые инициируют AsyncNetworkOperation:
@protocol AsyncNetworkOperationDelegate
@optional - (void)operationAboutToFinish;
@required - (void)operationFinishedWithData:(id)retrievedData;
@required - (void)operationFinishedWithError:(NSError*)error;
@end
Это все работает нормально, за исключением случая, когда делегат, которому я перезваниваю, хочет показать UIAlertView, запустить NSTimer или сделать что-то еще, что вторичные потоки либо не должны делать, либо требуют дополнительных усилий делать.
Итак, вот мой вопрос: когда я перезваниваю делегату, должен ли я сделать это через - [NSObject executeSelectorOnMainThread:]? Казалось бы, при этом я освобождаю своего делегата от необходимости знать, вызывается ли он через вторичный или первичный поток, что позволяет ему реализовывать функциональные возможности самым простым способом без каких-либо ограничений.
Просто интересуюсь стандартным способом решения этой проблемы.
Спасибо.