Необходимо ли реализовать все инициализаторы для подкласса 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, очевидно, обрабатывает другие для вас.
И, как вы заявляете, переопределение методов суперкласса просто для вызова суперкласса - пустая трата времени, поскольку среда выполнения сделает это, если вы все равно не переопределите его.