Настройка KVO для просмотра свойств в методах init - PullRequest
0 голосов
/ 26 октября 2011

У меня есть класс с большим количеством init... методов (UITableViewCell).У моего расширения есть дополнительное свойство, которое при установке будет регулировать различные свойства ячейки, такие как цвета.У меня было два варианта обработки изменения свойства.

  1. Переопределить установщик свойства, сохранить переданное значение, а затем установить цвета и т. Д.
  2. Переопределить все начальные значения и добавитьKVO следит за свойством, которое вызывает приватный метод для настройки цветов и т. Д.

Элемент № 1 представляется наиболее простым в применении, но это означает, что мне приходится иметь дело с ручным вводом кода установщика (в соответствии с руководящими принципами Apple.

Элемент №2 поначалу звучит неплохо, потому что мне не нужно добавлять место установки установщика, но стоило бы больше кода, потому что мне пришлось бы переопределить все блоки.

Есть ли другие альтернативы?

1 Ответ

2 голосов
/ 26 октября 2011

Вам нужно только переопределить назначенный инициализатор (ы) . Как правило, большинство классов имеют только один назначенный инициализатор, а классы, соответствующие <NSCoding>, имеют два (второй - -initWithCoder:).

Не забудьте: если вы настроили KVO в init, вам придется помнить, чтобы отменить его регистрацию в -dealloc. Объекты не отменяют автоматическую регистрацию KVO, когда уходят, и если вы забудете, то любой объект, который будет выделен по тому же адресу в будущем, унаследует просочившихся наблюдателей KVO.

...