我想覆盖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