Я вызываю функцию, чтобы открыть подвид из моего родительского представления.
Я вижу, что viewDidLoad
называется. В моем viewDidLoad
нет кода. Странное поведение заключается в том, что иногда viewDidAppear:
не вызывается, даже если я не менял код.
Причин конечно может быть много, но как отлаживать не знаю. Ищу способ узнать где зависает процесс в момент когда viewDidLoad
закончено.
У кого-нибудь есть подсказка для меня или кто-нибудь знает, в чем может быть проблема? Я имею в виду, что иногда это работает, когда-то нет. Зависит ли viewDidAppear:
от родительского представления или что-то не так в подпредставлении?
func showSubview() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("Subview") as! SubViewController
self.presentViewController(vc, animated: true, completion: nil)
//self.showViewController(vc, sender: self);
}
ОБНОВЛЕНИЕ Я вызываю showSubview из асинхронной задачи, думаю, это нехорошо. Как вы думаете и как мне лучше поступить? Есть ли обработчик компиляции с помощью dispatch_async ?
dispatch_async(backgroundQueue, {
dosomething_long();
showSubview();
})
ОБНОВЛЕНИЕ 2 Проблема в том, что я открываю подвид из фоновой задачи. Я не должен этого делать. Но вопрос в том, как я могу вызвать подвид, когда фоновая задача завершена. Есть ли обработчик завершения для вызова dispatch_async?
РЕШЕНО С ПОМОЩЬЮ ГЕНДАЛЬФА
Я глупый :-) Я должен вызвать подвид в основном потоке:
dispatch_async(backgroundQueue, {
dosomething_long();
dispatch_async(dispatch_get_main_queue(), {
showsubview();
});
})
release
, точки останова могут не приостанавливать счетчик программ, как ожидалось. - person Gandalf   schedule 29.10.2015