我想覆蓋setter和getter並找到objc_property_t
的類,而不是單獨爲每個屬性執行此操作。覆蓋子類的所有設置者和獲取者
我得到像這樣所有的屬性:
unsigned int numberOfProperties;
objc_property_t *propertyArray = class_copyPropertyList([self class], &numberOfProperties);
for (NSUInteger i = 0; i < numberOfProperties; i++) {
objc_property_t property = propertyArray[i];
NSString *name = [[NSString alloc] initWithUTF8String:property_getName(property)];
property.getter = SEL; //?
}
這是我怎麼想覆蓋getter和setter一個例子 - 如果有一個更好的辦法,讓我知道。 NSInvocation也許?
- (UIImage *)backgroundImage
{
return [self overrideGetterWithSelector:NSStringFromSelector(_cmd)];
}
- (void)setBackgroundImage:(UIImage *)backgroundImage
{
[self overrideSetterForObject:backgroundImage forSelector:NSStringFromSelector(_cmd)];
}
或者有沒有辦法攔截所有發送到類的消息?
我的目標是制定一種通用的方法來存儲啓動之間的類的屬性。您可能想問爲什麼我不使用NSUserDefaults
或NSKeyedArchiver
。那麼,我正在使用NSKeyedArchiver
- 我不想手動覆蓋每一個setter和getter。
爲什麼不使用CoreData? – hypercrypt
1.核心數據真的是矯枉過正,我想做的事 - 設置和獲取屬性。 2.我想創建一個可重用的課程,只需要很少的工作就可以完成設置。只需添加一個屬性即可。 – Kevin