Interface Builder を使用して、テキスト ビューのアウトレットをセットアップしました。テキストビューは正常に読み込まれますが、アウトレットが常にnil
.
いつインスタンス化されますか?私applicationDidFinishLoading
が呼び出された後でも、それはまだ「生きていない」またはアーカイブされていません。
アウトレットは変数 (またはプロパティ) であるため、インスタンス化されません。
awakeFromNib
nib 内のオブジェクトは、その nib がロードされたときにインスタンス化され、オブジェクトが作成された後、関連するすべてのオブジェクトに送信される前に、できるだけ直後に各アウトレットに割り当てられます。
つまり、nib の読み込みは、次のすべてをこの順序で実行します。
view
トップレベル ビューへのアウトレット。)awakeFromNib
し、(Cocoa では) ファイルの所有者 (ウィンドウ コントローラなど) にも送信します。あなたの質問は#2によって答えられます。
詳細については、リソース プログラミング ガイドを参照してください。詳細は、Cocoa と Cocoa Touch の間で微妙に異なります。特に、どのオブジェクトがawakeFromNib
メッセージを送信され、どのオブジェクトが送信されないかに関してです。
いつインスタンス化されますか?私
applicationDidFinishLoading
が呼び出された後でも、それはまだ「生きていない」またはアーカイブされていません。
テキストビューではありませんか?
おそらくそうで、コンセントを接続していないだけです。ニブでこれを確認してください。
別の可能性: アプリ デリゲートが作成された場所ではなく、別の nib でテキスト ビューを作成し (ペン先でアプリ デリゲートを作成した場合でも)、ビューを右側のアウトレットに接続していませんでした。物体。おそらく、テキスト ビューの nib に 2 つ目のアプリ デリゲートを作成しました。このアプリ デリゲートは、実際にはアプリのデリゲートではありません。そのため、実際のアプリ デリゲートにはテキスト ビューが表示されません。テキスト ビューは、本物の McCoy ではなく、なりすましに与えられたものです。