根据文档,我创建了一个自定义子类NSTextFieldCell
,其唯一目的是覆盖方法setUpFieldEditorAttributes:
。是否有必要实现NSTextFieldCell子类的所有初始化器?
的文档不提任何初始化为NSTextFieldCell
的还是它的超类NSActionCell
,但NSCell
的文件明确提到:
当继承的NSCell您必须实现所有指定 初始化的。这些方法是:init,initWithCoder:,initTextCell:, 和initImageCell :.
现在,因为我没有做任何事情的自定义子类,除了覆盖在可可类明确的覆盖点,是真的在创造4(!)初始化任何点只调用它们的超类实现?
由于Objective-C中init...
方法的详细性质,这可能会使实现中的代码行数增加五倍,写入(以及读取,让人们进入该类事物)的注释数量并且通常会维护。
我知道我可以在写这篇文章的时候创建这些方法,但是我真的怀疑刚刚调用super的方法是否存在差异?
编辑补充:
我误读了NSTextFieldCell
文档,这也说明,所有的指定初始化的必须实施,但问题仍然有效 - 做3(init
莫名其妙地消失了作为指定初始化下来继承链)初始化器,只是叫超级真的有什么区别?
好抓!我甚至已经翻了几遍这个例子,但没有想到这方面。然而'init'似乎不是一个指定的初始值设定项,所以它证实了我的怀疑,他们的意思是说,如果你触摸某个指定的初始值设定项,你必须确保它们全部与你的改变同步。只是一个不幸的措辞。 – Monolo
我同意文档的措辞很不明确。 –