ボタンを宣言するとき、ボタンのプロパティとして常に 2 つのオプションがあります: 強いと弱いです。それらの違いは何ですか?また、それは非原子的ですか?例えば:
@property (weak, nonatomic) IBOutlet UIButton *MyButton;
ボタンを宣言するとき、ボタンのプロパティとして常に 2 つのオプションがあります: 強いと弱いです。それらの違いは何ですか?また、それは非原子的ですか?例えば:
@property (weak, nonatomic) IBOutlet UIButton *MyButton;
これはすべてhttp://clickflickboom.com/strong-vs-weak/から取得しました...
プロパティを定義するときは、(強) と (弱) のどちらかを選択できます。この投稿では、この 2 つの違いについて説明します。
強い
@property (strong) NSString *myString;
これはポインターのデフォルトの状態ですが、明確にするために明示的に strong を述べたいと思います。強いポインターは、それが割り当てられたクラスが残っている限り保持されます。
弱い
@property (weak) NSString *myString;
弱い参照とは、ポインターに所有者がいないことを意味します。したがって、必要がなくなるとすぐに割り当てが解除されます (つまり、他に何も指していません)。
最も一般的には、UITextFIeld、UILabels、UIButton オブジェクトなどの IBOutlets に weak を使用します。次に例を示します。
この場合、コントローラー内のビューでボタン (theButton) の IBOutlet を作成しています。theButton オブジェクトはコントローラーではなくビューに属しているため、この場合、弱い属性の方が強い属性よりも理にかなっています。実際、一般的なルールとして、IBOutlets は常にweak に設定する必要があります。
これを読んで下さい:
実用的な観点から、iOS および OS X では、アウトレットは宣言されたプロパティとして定義する必要があります。ファイルの所有者から nib ファイル (または、iOS ではストーリーボード シーン) 内の最上位オブジェクトへのアウトレットは強力であるべきですが、それを除いて、一般的にアウトレットは弱いはずです。したがって、次の理由により、作成するアウトレットは通常、デフォルトで弱いものになります。
ビュー コントローラのビューまたはウィンドウ コントローラのウィンドウのサブビューなどに作成するアウトレットは、所有権を意味しないオブジェクト間の任意の参照です。
強力なアウトレットは、フレームワーク クラスによって頻繁に指定されます (たとえば、UIViewController のビュー アウトレット、または NSWindowController のウィンドウ アウトレット)。
@property (weak) IBOutlet MyView *viewContainerSubview;
@property (strong) IBOutlet MyOtherClass *topLevelObject;