2016-07-11 15 views
0

イントロ
私のプログラムをデバッグしようとしていますが、問題が発生しました。迅速なエラーが発生しています:Unexpectedly found nil while unwrapping an optional value.この問題は、暗黙のうちにアンラップされたオプションからのものです。エラーはViewControllerBのinit?(aDecoder:)にあり、値を設定する場所はViewControllerAのprepareForSegue(_:sender:)で、ViewControllerBに行くためには "show segue"を使用します。init?(aDecoder :)かprepareForSegue(_:sender :)が最初に呼び出されましたか?

問題
これはViewControllerBでinit?(aDecoder:)方法はViewControllerAでprepareForSegue(_:sender:)前に呼び出されることを信じて私をリードしています。私は正しい?

答えて

3

はい。オブジェクトは、アプリケーションの他の場所で使用される前に常に初期化されます。

設定するプロパティに応じて行う必要がある作業がある場合は、プロパティまたはviewDidLoad()メソッドでdidSetオブザーバからその作業をトリガすることが適切な場合がよくあります。

+0

拡張する:「他の場所で使用する前に」...オブジェクトは 'segue.destinationViewController'で利用可能なのでオブジェクトはおそらくすでに初期化されている可能性があります –

+0

技術的には、 –

+0

オブジェクトは確実に初期化されます。あなたは怠惰な財産を考えていますか?それはオブジェクト自体の初期化ではありません。オブジェクト自体は 'prepareForSegue()'で利用できるようになる前に初期化されています。 – Jim

関連する問題