7

次のようなコードがある場合:

objc_setAssociatedObject (
  obj,
  &key,
  val,
  OBJC_ASSOCIATION_RETAIN
);

関連する電話をかける必要がありますか

objc_setAssociatedObject (
  obj,
  &key,
  nil,
  OBJC_ASSOCIATION_RETAIN
);

保持された値を解放するには?Objective-C ランタイムは自動で連想参照を解放しますdeallocか?

4

1 に答える 1

14

親オブジェクトの割り当てが解除されると、関連付けられたオブジェクトが解放されます。こちらのドキュメント、特にこの例を参照してください。

ポイント1では、配列が関連付けられたオブジェクトを保持するようにポリシーで指定されているoverviewため、文字列は引き続き有効です。OBJC_ASSOCIATION_RETAINただし、アレイの割り当てが解除されると(ポイント2で)overview解放されるため、この場合も割り当てが解除されます。

于 2011-05-25T10:04:19.630 に答える