2016-07-11 2 views
0

Intro
Я пытаюсь отладить свою программу, и у меня возникла проблема. Я получаю быструю ошибку: Unexpectedly found nil while unwrapping an optional value. Эта проблема связана с неявным образом развернутым необязательным. Ошибка находится в ViewControllerB init?(aDecoder:), а место, где я устанавливаю значение, находится в prepareForSegue(_:sender:) ViewControllerA, который использует «show segue» для перехода на ViewControllerB.Является init? (ADecoder :) или prepareForSegue (_: sender :) называется первым?

Проблема
Это приводит меня к считаю, что метод init?(aDecoder:) в ViewControllerB вызывается перед prepareForSegue(_:sender:) в ViewControllerA. Я прав?

ответ

3

Да. Объект всегда инициализируется, прежде чем его можно будет использовать в другом месте приложения.

Если есть работа, которую вы должны сделать, это зависит от установленного свойства, часто бывает целесообразно запускать эту работу от наблюдателя по этому свойству или в методе viewDidLoad().

+0

Чтобы развернуть: «прежде чем он может быть использован в другом месте» ... поскольку объект доступен через 'segue.destinationViewController', объект, вероятно, уже инициализирован –

+0

Хотя я смущаюсь согласиться с« всегда », так как объект может быть технически инициализирован лениво –

+0

Объект определенно будет инициализирован. Вы думаете о ленивых свойствах? Это не инициализация самого объекта. Сам объект * * должен быть инициализирован до того, как он будет доступен для 'prepareForSegue()'. – Jim

Смежные вопросы