2011-12-06 11 views
2

テンプレート "MasterDetail"アプリケーションは、のテンプレートのIBOutletを、strong修飾子を持つDetailViewController.hに書き込みます。ARC内のIBOutletと有効期限修飾子

@property (strong, nonatomic) IBOutlet UILabel *detailDescriptionLabel; 

iTunesU(レッスン2時間14:30)からスタンフォードCS193のレッスンでは、それらはラベルがすでにウィンドウで作成されたことへの強いポインタを持っていると言ってweakとしてIBOutletを設定している間。

今、私の質問は、ラベルとボタンのようなIBOutletの記憶域を宣言しなければならないことです。それは弱いを使用するのは正しいですか?私がiOS4に乗っているのであれば、unsafe_unretainedを使ってもいいですか?

EDIT -----

私は、強いまたは弱いについての答えを見つけた...主なルールは以下のとおりです。

  • 使用strongため
  • 利用weak XIBのトップレベルの要素についてあなたがチェックすることができ

ラベルボタンなどのようなサブ要素... documentation
しかし、私はまだiOSについて何かを見つけることができません。

答えて

4

まあ、MRCと基本的に同じです。

IBOutletは通常、コントローラのビュー階層内にあり、親ビューによって暗黙に保持されます。 assign(MRC)またはweakまたはunsafe_unretained(ARC)を使用できます。どのような場合でも、ビュー階層からオブジェクトを削除すると、ポインタは無効になります。 唯一の違いは、MRCとARC 4.0では、ポインタが自動的にnilに設定されないという点です。それでもメモリアドレスは含まれていますが、アドレスは無効です。 いずれにしても、ポインタを使用しないでください。

ビュー階層の一部ではないオブジェクト(通常はxibのすべての最上位要素、または階層から動的にビューを削除して無効にしたくない場合でも)を使用したい場合はいつでも、 retainまたはstrong指定子を使用します。

多くの例ではすべてのIBOutletsにstrongを使用していますが、エラーではありません。それだけでは必要ありません。