0

ARC が有効になっている OS X 10.7 で、弱参照(つまり、辞書はキーと値を保持しない) を持つオブジェクトの辞書を作成するにはどうすればよいですか? NSMapTable は有望に見えますが、残念ながら、ARC が有効になっている場合は弱参照を使用しません。

4

1 に答える 1

0

NSMapTable はまさにあなたが望むものです。

10.8 以降:

特にあなたの場合、これを使いたいようです:

+ (id)weakToWeakObjectsMapTable
戻り値
キーと値への弱い参照を持つ新しいマップ テーブル オブジェクト。

ドキュメントから:

主なオプションは、オブジェクトの 1 つが回収されたときにエントリが削除されるように、キーや値を「弱く」保持することです。

ショートカット クラス メソッドを使用するか、+ (id)weakToWeakObjectsMapTable必要+ (id)weakToStrongObjectsMapTableに応じて使用できます。

NSMapTableOptions他の初期化子に動作を指定する方法についても参照してください。

NSMapTableWeakMemory ARCまたは GC
に適した弱い読み取りおよび書き込みバリアを使用します。NSPointerFunctionsWeakMemory オブジェクト参照を使用すると、最後のリリースで NULL になります。NSMapTableZeroingWeakMemory に等しい。

10.7+:

オプションを使用– initWithKeyOptions:valueOptions:capacity:して渡すNSMapTableZeroingWeakMemory(オブジェクトが「弱い参照セーフ」であると仮定)代わり– initWithKeyPointerFunctions:valuePointerFunctions:capacity:に、組み込み関数が機能しない場合、またはバージョンで使用できない場合は、カスタム関数を使用して指定できます。(おそらく、「不透明な」性格の1つがあなたのために働くでしょう)

于 2013-10-23T16:23:29.027 に答える