РЕДАКТИРОВАТЬ: Питер прав в комментариях, это решение работает, только если для этого свойства зарегистрирован наблюдатель. Теперь я помню, что я сделал это на CALayer со свойствами @dynamic, и в этом случае это работает так, как вы хотели бы. Однако в общем случае это не очень хорошее решение вашей проблемы.
Предполагая, что ваш класс совместим с KVC для свойств, для которых вы хотите вызвать повторное отображение, я бы переопределил метод -didChangeValueForKey:
для вызова [self setNeedsDisplay]
, когда ключ соответствует одному из ваших свойств. Я думаю, что это немного лучше, чем метод переопределения Питера -setValue: forKey: потому что он не мешает нормальному механизму KVC и не требует бокса, который он упоминает.
- (void)didChangeValueForKey:(NSString*)key {
if ([@"propertyOne" isEqualToString:Key] ||
....) {
[self setNeedsDisplay];
}
[super didChangeValueForKey:key]; // <- Don't forget this
}