Вы можете добавить «reloadTable» как определенную операцию с зависимостью от операции разбора, сразу после определения операции разбора и непосредственно перед запуском очереди (поэтому для безопасности инициализируйте очередь как приостановленную, а затем запустите ее только после всех операцийбыли добавлены):
// ... inside your operation code definition
NSInvocationOperation *reloadOp = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(myReload) object:nil];
[reloadOp addDependency:obj] // adding here the parse operation as a dependency
[operationQueue addOperation:reloadOp];
Операция "myReload" должна быть определена как автономный метод, чтобы гарантировать, что метод reloadTable вызывается в основном потоке:
-(void)myReload {
[table performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
}
Таким образом, ваш код перезагрузки будет запущен только после завершения операции разбора.Это полезно, если вам нужно выполнить больше операций, и все они должны быть выполнены до перезагрузки таблицы.Обратите внимание, что зависимость не знает о том факте, что операция завершилась нормально или была отменена.
Другой хороший способ, который вы можете рассмотреть, - это определить последовательную очередь GCD и добавить два блока последовательно (первый блок разбираетсявторой блок - перезагрузка таблицы).В таком случае GCD гарантирует правильный порядок выполнения двух блоков (FIFO).