根据文档,我创建了NSTextFieldCell
的自定义子类,其唯一目的是覆盖方法setUpFieldEditorAttributes:
。
文档没有提及NSTextFieldCell
或其超类NSActionCell
的任何初始值设定项,但NSCell
的文档明确提到:
当继承NSCell时,您必须实现所有指定的 初始化。那些方法是:init,initWithCoder:,initTextCell:, 和initImageCell:。
现在,由于我在自定义子类中没有做任何事情,除了覆盖Cocoa类中的显式覆盖点之外,创建4(!)初始化器是否真的有任何意义,只能调用它们的超类实现? / p>
由于Objective-C中init...
方法的冗长性质,这将使实现中的代码行数增加五倍,写入的注释数量(以及读取,用于人们进行此类事情)并且通常维持。
我知道我可以在我写这篇文章时创建这些方法,但我真的想知道只是调用super的方法的存在是否会产生任何影响?
已编辑添加:
我误读了NSTextFieldCell
文档,它们还声明必须实现所有指定的初始值设定项,但问题仍然存在 - 做3(init
以某种方式作为继承链中的指定初始化程序消失了)只是打电话给超级的初始化者确实有所作为吗?
答案 0 :(得分:1)
在Apple的“DragNDropOutlineView”示例代码中,他们实现了“ImageAndTextCell”,这是NSTextFieldCell的自定义子类。
在其中,他们覆盖的唯一初始化程序是
-(id) init
NSTextFieldCell显然会为你处理其他人。
而且,正如您所说的,仅仅调用超类来覆盖超类的方法是浪费时间,因为如果您不覆盖它,运行时将会这样做。