В настоящее время я пытаюсь использовать атрибуты пользователя Определено время выполнения в Xcode 6 по следующему алгоритму:Определенные пользователем атрибуты времени выполнения и связанных с ним объектов
Добавить пользовательские свойства класса UIView с использованием связанных объектов
#define ASSOCIATED_OBJECT_GETTER_AND_SETTER(propertyType, propertyName, propertyNameWithCapital, associationType) \ -(void)set##propertyNameWithCapital:(propertyType)_value \ { \ objc_setAssociatedObject(self, @selector(propertyName), _value, associationType); \ } \ -(propertyType)propertyName \ { \ return objc_getAssociatedObject(self, @selector(propertyName)); \ } \ @interface eMyTags : NSObject @property (nonatomic) NSString* name; @end @implementation eMyTags @synthesize name; @end @interface UIView (MyTags) @property (nonatomic) eMyTags* myTags; @property (nonatomic) NSString* myName; @end @implementation UIView (MyTags) @dynamic myTags, myName; ASSOCIATED_OBJECT_GETTER_AND_SETTER(eMyTags*, myTags, MyTags, OBJC_ASSOCIATION_RETAIN_NONATOMIC); ASSOCIATED_OBJECT_GETTER_AND_SETTER(NSString*, myName, MyName, OBJC_ASSOCIATION_RETAIN_NONATOMIC); @end
Установка значений этих свойств через Xcode раскадровку
Доступ эти свойства в коде во время выполнения
-(void)viewDidLoad { [super viewDidLoad]; NSLog(@"myName: %@", view.myName); NSLog(@"myTags.name: %@", view.myTags.name); }
Когда я скомпилировать и запустить вывод:
myName: bla
myTags.name: (null)
Так почему myTags.name
не установлен? Что я упустил? Не могу ли я установить атрибуты Runtime, определенные пользователем, для пользовательских типов?
Вам удалось найти решение для этого? –
@DaniA Я нашел решение для своей конкретной проблемы, но я даже не помню, что было реальной проблемой, и как я решил это :) Это было 2 года назад, и у меня нет кода на объективе-c в течение длительного времени с тех пор. Прости. – Alexandr