Каков рекомендуемый способ контролировать изменения свойств объекта

#objective-c #design-patterns #coding-style

#objective-c #шаблоны проектирования #стиль кодирования

Вопрос:

Предположим, у нас есть следующий интерфейс:

 @interface ColoredView : NSView {
    NSColor *color;
}
@property (copy) NSColor *color;

- (id)initWithColor:(NSColor *)aColor;

@end
  

И мы хотим, чтобы view показывал анимацию всякий раз, когда меняется цвет, т. Е. анимация должна запускаться сразу после изменения цвета.

Вопрос в том, какое лучшее место для реализации триггерной логики: setter, observeValue или что-то еще?

Ответ №1:

В установщике (используя, например, уведомления), если можете, в противном случае используя KVO. KVO лучше в теории (очень слабая связь между двумя классами), но может преподнести несколько сюрпризов.

Комментарии:

1. Нормально ли использовать шаблон наблюдения, чтобы заставить объект наблюдать за изменениями его свойств?

2. В зависимости от сложности вашего дизайна, да. Возможно, это не стоит делать для небольших проектов.