7

Xcode iOS 5.1 SDK の IBOutletsstrongとの違いは何ですか?weak

以前は、強力な IBOutlets が存在しない 4.3 SDK を使用していました。また、(自動) リリースは iOS 5.1 SDK では使用できません。

4

3 に答える 3

13

Strongこのプロパティがオブジェクトを指している限り、そのオブジェクトは自動的に解放されないことを意味します。非ARCでは、それはの同義語ですretain

宛先オブジェクトとの強い (所有) 関係があることを指定します。

Weak代わりに、プロパティが指すオブジェクトは自由に解放できますが、プロパティが NULL に設定されている場合に限ります。ARCでは、weakを使用して、それが指すオブジェクトを所有していないことを確認します

宛先オブジェクトとの弱い (非所有) 関係があることを指定します。宛先オブジェクトの割り当てが解除されると、プロパティ値は自動的に nil に設定されます。

Nonatomic複数のスレッドが一度にプロパティを読み取ったり変更したりしようとすると、問題が発生する可能性があることを意味します。その結果、部分的に書き込まれた値または過剰に解放されたオブジェクト = クラッシュが発生します。

こちらの Apple のドキュメントもご覧ください。

そこから、例は

@property (weak) IBOutlet MyView *viewContainerSubview;
@property (strong) IBOutlet MyOtherClass *topLevelObject;

との詳細については、こちらも確認してください。strongweak

于 2012-06-23T11:15:36.350 に答える
2

In ARC (Automatic Reference Counting)Strongは、プロパティと所有者の関係が「強い」ことをコンパイラに伝えます。retainこれは、自動解放プール メモリ スキームと同等です。Apple には、ARC への移行に関する記事があります

于 2012-06-23T11:25:07.720 に答える
0

strong として宣言するプロパティは、オブジェクトを所有し、コンパイラはオブジェクトがこのプロパティを割り当てることを処理します。nil に設定すると、このプロパティは破棄されます。

コントロールの寿命が必要ない場合は、週のプロパティとして宣言します。

于 2014-01-20T14:26:53.360 に答える