Необходимо ли реализовать все инициализаторы для подкласса NSTextFieldCell?

Согласно документам, я создал собственный подкласс NSTextFieldCell с единственной целью переопределения метода setUpFieldEditorAttributes:,

В документах не упоминаются инициализаторы для NSTextFieldCellили супер класс NSActionCell, но документация для NSCell прямо упоминается:

При создании подкласса NSCell необходимо реализовать все указанные инициализаторы. Это следующие методы: init, initWithCoder:, initTextCell: и initImageCell:.

Теперь, поскольку я ничего не делаю в пользовательском подклассе, кроме переопределения явной точки переопределения в классе Какао, есть ли смысл создавать 4(!) Инициализатора, которые вызывают только их реализации суперкласса?

Из-за многословной природы init... методы в Objective-C, это будет в пять раз больше строк кода в реализации, количество комментариев, чтобы написать (и прочитать, для людей в такого рода вещи) и в целом поддерживать.

Я знаю, что мог бы просто создать эти методы за то время, которое у меня ушло на написание этого, но я искренне задаюсь вопросом, имеет ли какое-либо значение существование метода, который просто вызывает super?

Отредактировано, чтобы добавить:

Я неправильно понял NSTextFieldCell документы, в которых также указывается, что все указанные инициализаторы должны быть реализованы, но вопрос все еще остается - сделать 3 (init как-то исчезли как назначенный инициализатор в цепочке наследования) инициализаторы, которые просто вызывают super, действительно имеют значение?

1 ответ

Решение

В примере кода Apple "DragNDropOutlineView" они реализуют "ImageAndTextCell", пользовательский подкласс NSTextFieldCell.

В нем единственный инициализатор, который они переопределяют,

-(id) init

NSTextFieldCell, очевидно, обрабатывает другие для вас.

И, как вы заявляете, переопределение методов суперкласса просто для вызова суперкласса - пустая трата времени, поскольку среда выполнения сделает это, если вы все равно не переопределите его.

Другие вопросы по тегам