Объект c ассоциированным объектом во время выполнения

учебник по ассоциированным объектам"Ссылка на учебник дала мне четкую концепцию ассоциированного объекта времени выполнения c-объекта"

После прочтения приведенного ниже примера кода у меня возник небольшой вопрос.

    - (void)setAssociatedObject:(id)object
    {
       objc_setAssociatedObject(self, @selector(associatedObject), object,OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    }

    - (id)associatedObject
    {
       return objc_getAssociatedObject(self, @selector(associatedObject));
    }

Если вы используете ARC в iOS, нужно ли нам самим добавлять обработку памяти?

заранее спасибо

1 ответ

Решение

Вы должны позвонить objc_setAssociatedObject приведет к сохранению объекта - это OBJC_ASSOCIATION_RETAIN_NONATOMIC часть. Это заданное поведение, оно также будет автоматически освобождено при освобождении объекта, с которым оно связано.

Таким образом, вам не нужно больше обрабатывать память независимо от того, используете ли вы ARC или нет (при условии, что если вы хотите, чтобы это действовало как copy свойство, вам, очевидно, нужно будет добавить копирование, которое будет выглядеть по-разному при ARC и не-ARC).