Группировка NSOperation работает с тем же объектом и определить, когда они закончили в iOS
У меня есть приложение для iOS, в котором 5 NSBlockOperation создают NSArray объектов каждый и добавляют его в общий синхронизированный NSMutableArray, который служит источником данных UITableView.
Операции не зависят друг от друга, и как только они завершатся, мне нужно запустить перезагрузку данных UITableView.
К сожалению, я не смог найти способ сделать это с NSOperation. Нужно ли использовать другой многопоточный дизайн?
1 ответ
Добавьте свой вызов для перезагрузки данных в еще одну NSOperation, которая имеет свои зависимости (см. addDependency:
) остальные пять операций. Тогда он не будет выполнен, пока остальные не будут завершены.
Обязательно оберните ваши вызовы пользовательского интерфейса при отправке GCD в основной поток.
Из ссылки NSOperation:
Зависимости - это удобный способ выполнения операций в определенном порядке. Вы можете добавлять и удалять зависимости для операции, используя методы addDependency: и removeDependency:. По умолчанию объект операции, имеющий зависимости, не считается готовым, пока все его зависимые объекты операций не завершат выполнение. Однако после завершения последней зависимой операции объект операции становится готовым и способным к выполнению.