Добавление ivars в категорию с помощью objc_setAssociatedObject
Я планирую добавить в iVars
в категорию с objc_setAssociatedObject()
, Тем не менее, я не уверен, когда позвонить objc_removeAssociatedObjects()
чтобы избавиться от них.
Есть ли способ, которым категория может узнать, когда объект, использующий ее, был de-allocated
?
1 ответ
Решение
Если вы установите связь с
objc_setAssociatedObject(self, &key, otherObject, OBJC_ASSOCIATION_RETAIN);
// or OBJC_ASSOCIATION_RETAIN_NONATOMIC
затем otherObject
автоматически освобождается при self
освобожден. (По крайней мере, если вы используете ARC, но я думаю, что это также правильно с ручным подсчетом ссылок.)
Так что вам не нужно звонить objc_removeAssociatedObjects()
явно, если вы не хотите избавиться от добавленных объектов до того, как основной объект будет освобожден.