簡単な質問: forViewController
は自動的にラベルへの強い参照を保持しますか? また、プログラムで を作成し、プログラムで画面に配置すると、それへの強い参照も自動的に保持されますか?IBOutlet
UILabel
ViewController's view
UIPopoverController ivar
ViewController
UIPopoverController ivar
ViewController's view
3 に答える
ビュー階層の一部ではないビューへの強力な参照を維持する必要があります。ビュー コントローラーには既にそのview
プロパティ (メイン ビュー) への強い参照があり、すべてのサブビューはスーパービューによって保持されるため、実際にはそれらへの強い参照を保持する必要はなく、それらのビューへの弱い参照を保持できます。
ただし、メイン ビューにないビューがある場合 (たとえば、後でメイン ビューに追加する .xib ファイルで定義された追加のビュー、または削除する子ビューの 1 つ)プログラムで再度追加する)、これらのビューへの強力な参照を保持する必要があります。
また、View Controller でビューへの強い参照を保持している場合は、ビューがアンロードされているとき (たとえば、View Controller がバックグラウンドにあるときなど) は必要ないため、設定self.strongViewRef = nil
する必要があることに注意してください。 viewDidUnload
-画面ビュー)。ビューが再度読み込まれると、プロパティはそのビューの新しいインスタンスに自動的に再設定されます。
ポップオーバーに関しては、表示されている間は保持されますが (window
と思います)、必要な間は強い参照を保持し、nil
使い終わったらそのポインターを設定することをお勧めします。このようにして、必要なときにアクセスできることを保証します。場合によっては、表示される直前または閉じられた直後です。
ビューコントローラーは強く保持する必要があるため、アウトレットを強くする必要はありません。ビューコントローラーがなくなると、ビューがなくなるためアウトレットを保持する理由がなくなるため、アウトレットを弱くしても問題ありません。ビューは、それら自体への強力なポインターを保持します。
編集:はい、popovercontrollerへの強力なポインタを保持する必要があると言うのを忘れて申し訳ありません