Я работаю над приложением iOS и пришел к одной проблеме, которая ест мое время, чтобы понять. Я не могу поместить весь исходный код здесь, но я пытаюсь установить, что связано с проблемой.Отправка async и ViewWillAppear
class MyItemsListVC: UIViewController, UITableViewDataSource,UITableViewDelegate {
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
}
func updateMyProductList() {
//update data source array code here
dispatch_async(dispatch_get_main_queue(), {() -> Void in
productListTableView.reloadData()
})
}
}
У меня есть один parentViewController (UIViewController) из указанного класса, который содержит объект своего объекта childViewController MyItemsListVC т.е..
На основе некоторой бизнес-логики, когда я вызываю метод updateMyProductList из parentViewController, я получаю ниже последовательность вызовов метода.
- Призыв к updateMyProductList из ParentViewController
- updateMyProductList дозвонились
- "Обновление источника данных код массива здесь" от метода "updateMyProductList" дозвонились
- viewWillAppear дозвонились
Здесь я ожидая после третьего шага, код внутри блока «dispatch_async» должен получить вызов, который перезагружает представление таблицы. Я не уверен, почему вызываются «viewWillAppear». Я в порядке, если «viewWillAppear» вызывается после «dispatch_async».
Здесь же dispatch_async (dispatch_get_main_queue() блок кода, имеющий низкий приоритет над «viewWillAppear»? Так как в главном потоке?
Это будет очень полезно, если бы я получить некоторые подсказки, чтобы решить эту проблему.
У меня есть отдельный класс для извлечения данных ... Моя проблема в том, почему «viewWIllAppear» получает вызов перед кодом внутри dispatch_async i.e.? имеет ли он более высокий приоритет в последовательной очереди?Я хотел бы запустить первый код внутри блока dispatch_async до того, как viewwillappear и после того, как массив источников данных будет обновлен. –