我目前正在嘗試使用用戶定義的屬性運行在Xcode 6以下算法:用戶自定義運行時的屬性和相關對象
使用相關聯的對象
#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
添加到UIView類自定義屬性
通過Xcode的這些屬性的設置值故事板
次訪問這些屬性在代碼運行時
-(void)viewDidLoad { [super viewDidLoad]; NSLog(@"myName: %@", view.myName); NSLog(@"myTags.name: %@", view.myTags.name); }
當我編譯和運行時的輸出是:
myName: bla
myTags.name: (null)
那麼,爲什麼myTags.name
沒有設置?我錯過了什麼?我無法設置自定義類型的用戶定義的運行時屬性?
您是否設法找到解決方案? –
@DaniA我已經找到了解決方案,我的具體問題,但我什至不記得是什麼實際問題,以及我如何解決這個問題:)這是2年前,我沒有代碼在Objective-C很長從那時起。對不起。 – Alexandr