Добавление 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() явно, если вы не хотите избавиться от добавленных объектов до того, как основной объект будет освобожден.

Другие вопросы по тегам