Objective c 是否需要为NSTextFieldCell子类实现所有初始值设定项?

Objective c 是否需要为NSTextFieldCell子类实现所有初始值设定项?,objective-c,cocoa,nstextfield,nstextfieldcell,Objective C,Cocoa,Nstextfield,Nstextfieldcell,根据文档,我创建了一个自定义子类NSTextFieldCell,其唯一目的是覆盖方法setUpFieldEditorAttributes: 文档中没有提到NSTextFieldCell或其超类NSActionCell的任何初始值设定项,但NSCell的文档明确提到: 当子类化NSCell时,必须实现所有指定的 初始化者。这些方法是:init、initWithCoder:、initTextCell:, 和initImageCell: 现在,由于我在自定义子类中除了覆盖Cocoa类中的一个显式覆盖点

根据文档,我创建了一个自定义子类
NSTextFieldCell
,其唯一目的是覆盖方法
setUpFieldEditorAttributes:

文档中没有提到
NSTextFieldCell
或其超类
NSActionCell
的任何初始值设定项,但
NSCell
的文档明确提到:

当子类化NSCell时,必须实现所有指定的 初始化者。这些方法是:init、initWithCoder:、initTextCell:, 和initImageCell:

现在,由于我在自定义子类中除了覆盖Cocoa类中的一个显式覆盖点之外没有做任何事情,所以创建4个只调用其超类实现的(!)初始值设定项真的有意义吗

由于Objective-C中的
init…
方法的冗长性,这将使实现中的代码行数、要编写的注释数(以及要读的注释数)增加五倍,并且通常需要维护

我知道我本可以在写这篇文章的时候创建这些方法,但我真的想知道一个只调用super的方法的存在是否有什么不同

编辑以添加:

我误读了
NSTextFieldCell
文档,其中还指出必须实现所有指定的初始值设定项,但问题仍然存在-do 3(
init
作为继承链中的指定初始值设定项不知怎的消失了)只调用super的初始值设定项真的有什么不同吗?

在苹果的“DragNDropOutlineView”示例代码,它们实现了“ImageAndTextCell”,NSTextFieldCell的一个自定义子类

在其中,它们覆盖的唯一初始值设定项是

-(id) init
NSTextFieldCell显然会为您处理其他问题


而且,正如您所说的,仅仅为了调用超类而重写超类的方法是浪费时间的,因为如果您不重写它,运行时就会这样做。

很好!我甚至多次仔细阅读了该示例,但没有考虑到这一点。然而,
init
似乎不是指定的初始值设定项,所以这有点证实了我的怀疑,他们的意思是,如果你碰一个指定的初始值设定人,你必须确保他们都与你的更改同步。这只是一个不幸的措辞。