Группировка NSOperation работает с тем же объектом и определить, когда они закончили в iOS

У меня есть приложение для iOS, в котором 5 NSBlockOperation создают NSArray объектов каждый и добавляют его в общий синхронизированный NSMutableArray, который служит источником данных UITableView.

Операции не зависят друг от друга, и как только они завершатся, мне нужно запустить перезагрузку данных UITableView.

К сожалению, я не смог найти способ сделать это с NSOperation. Нужно ли использовать другой многопоточный дизайн?

1 ответ

Решение

Добавьте свой вызов для перезагрузки данных в еще одну NSOperation, которая имеет свои зависимости (см. addDependency:) остальные пять операций. Тогда он не будет выполнен, пока остальные не будут завершены.

Обязательно оберните ваши вызовы пользовательского интерфейса при отправке GCD в основной поток.

Из ссылки NSOperation:

Зависимости - это удобный способ выполнения операций в определенном порядке. Вы можете добавлять и удалять зависимости для операции, используя методы addDependency: и removeDependency:. По умолчанию объект операции, имеющий зависимости, не считается готовым, пока все его зависимые объекты операций не завершат выполнение. Однако после завершения последней зависимой операции объект операции становится готовым и способным к выполнению.

Другие вопросы по тегам