Переопределить все сеттеры и геттеры подкласса
Я хочу переопределить сеттер и геттер и найти класс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; //?
}
Это пример того, как я хочу переопределить метод получения и установки - если есть лучший способ, дайте мне знать. NSInvocation может быть?
- (UIImage *)backgroundImage
{
return [self overrideGetterWithSelector:NSStringFromSelector(_cmd)];
}
- (void)setBackgroundImage:(UIImage *)backgroundImage
{
[self overrideSetterForObject:backgroundImage forSelector:NSStringFromSelector(_cmd)];
}
Или есть способ перехватить все сообщения, отправленные в класс?
Моя цель - сделать общий способ хранения свойств класса между запусками. Вы, вероятно, хотите спросить, почему я не используюNSUserDefaults
или жеNSKeyedArchiver
, Ну я пользуюсьNSKeyedArchiver
- Я не хочу вручную переопределять каждый установщик и получатель.