1. ホーム
  2. iphone

[解決済み] Objective-Cの弱いプロパティ・セッター属性と強いプロパティ・セッター属性

2023-01-23 03:49:56

質問

Objective-Cのweakとstrongのプロパティセッター属性の違いは何ですか?

@property(retain, [weak/strong]) __attribute__((NSObject)) CFDictionaryRef myDictionary;

影響やメリットは何ですか?

iOS4ではweakが使えないと聞いたのでassignを使いたいのですが。

weakはassignと似ていますか?

どのように解決するのですか?

特定のファイルに対して、ARCがオンかオフのどちらかです。 オンの場合は retain release autorelease などなど... その代わりに strong weak をプロパティに、あるいは __strong __weak は変数の場合(デフォルトは __strong ). Strongはretainと同等ですが、ARCはあなたのためにリリースを管理します。

weakを使いたいのは、retainサイクルを避けたい場合だけです(例えば、親が子をretainし、子が親をretainするので、どちらも解放されない)。

フリーダイヤルブリッジ」部分 (キャスト元は NS から CF ) は少し厄介です。 まだ手動で CFRelease()CFRetain() を使用します。 これらを NS オブジェクトに戻すときは、コンパイラに保持カウントを伝えて、何を行ったかわかるようにする必要があります。

それはすべて ここで .