1

簡単な質問: forViewControllerは自動的にラベルへの強い参照を保持しますか? また、プログラムで を作成し、プログラムで画面に配置すると、それへの強い参照も自動的に保持されますか?IBOutletUILabelViewController's viewUIPopoverController ivarViewControllerUIPopoverController ivarViewController's view

4

3 に答える 3

5

ビュー階層の一部ではないビューへの強力な参照を維持する必要があります。ビュー コントローラーには既にそのviewプロパティ (メイン ビュー) への強い参照があり、すべてのサブビューはスーパービューによって保持されるため、実際にはそれらへの強い参照を保持する必要はなく、それらのビューへの弱い参照を保持できます。

ただし、メイン ビューにないビューがある場合 (たとえば、後でメイン ビューに追加する .xib ファイルで定義された追加のビュー、または削除する子ビューの 1 つ)プログラムで再度追加する)、これらのビューへの強力な参照を保持する必要があります。

また、View Controller でビューへの強い参照を保持している場合は、ビューがアンロードされているとき (たとえば、View Controller がバックグラウンドにあるときなど) は必要ないため、設定self.strongViewRef = nilする必要があることに注意してください。 viewDidUnload-画面ビュー)。ビューが再度読み込まれると、プロパティはそのビューの新しいインスタンスに自動的に再設定されます。

ポップオーバーに関しては、表示されている間は保持されますが (windowと思います)、必要な間は強い参照を保持し、nil使い終わったらそのポインターを設定することをお勧めします。このようにして、必要なときにアクセスできることを保証します。場合によっては、表示される直前または閉じられた直後です。

于 2012-08-21T18:14:48.943 に答える
0

ビューコントローラーは強く保持する必要があるため、アウトレットを強くする必要はありません。ビューコントローラーがなくなると、ビューがなくなるためアウトレットを保持する理由がなくなるため、アウトレットを弱くしても問題ありません。ビューは、それら自体への強力なポインターを保持します。

編集:はい、popovercontrollerへの強力なポインタを保持する必要があると言うのを忘れて申し訳ありません

于 2012-08-21T18:08:20.340 に答える