Начиная с iPhone SDK 3.1, вы можете использовать objc_setAssociatedObject
. Вы бы сделали что-то вроде:
objc_setAssociatedObject(myColor, infoObject, &keyObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
Примечание 1: значение должно быть объектом. Вы не можете установить целое число в качестве значения.
Чтобы получить значение:
id aTag = objc_getAssociatedObject(myColor, &keyObject);
Примечание 2: keyObject должен точно тот же объект , который вы использовали при установке значения. Это не сработает, если вы отправите другой объект с тем же значением.
Если позже вы захотите освободить значение тега:
objc_setAssociatedObject(myColor, nil, &keyObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
(из-за ошибки это не работает в симуляторе iPhone. См. этот вопрос для получения дополнительной информации.)
Вы также можете прочитать этот пост , который затрагивает использование этого метода для хранения ключей.
Примечание: я не говорю, что это лучший способ решения проблемы. Как говорится в руководстве по программированию Objective-C, связанные объекты в основном предназначены для ситуаций, когда
у вас нет доступа к источнику
код для класса, или если для
причины бинарной совместимости вы
не может изменить расположение объекта.
Читать все об этом здесь .