Я изо всех сил пытаюсь найти способ синхронизировать работу в приложении для iPhone.
У меня есть три основных NSOperation.
NSInvocationOperation *showSpinner = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(spinnerOn:) object:YES];
NSInvocationOperation *reloadDatasource = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(reloadDatasource) object:nil];
NSInvocationOperation *hideSpinner = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(spinnerOn:) object:NO];
// Add dependency
[reloadDatasource addDependency:showSpinner];
[hideSpinner addDependency:reloadDatasource];
[self.queue addOperation:showSpinner];
[self.queue addOperation:reloadDatasource];
[self.queue addOperation:hideSpinner];
Я вижу, что три операции правильно запускаются последовательно. Однако, как вы можете себе представить, первая операция создает UIView и прикрепляет его сверху, а последняя должна удалить его.
Бывает, что графически операции выполняются сразу на экране. Таким образом, я могу видеть, что таблица уже загружена, пока вращающийся экран на экране, или другие странные несинхронизированные вещи.
Я понял, что изменения на графической стороне происходят в основном потоке. Поэтому я спрашиваю, как я могу изменить код, чтобы сделать то, что он должен делать. Что: создать счетчик, загрузить данные и удалить счетчик? Есть ли общий способ разделения графической операции и операции с данными? Например создать две разные операции.
спасибо