Objective C子类initialize方法如何调用超类的initialize方法

时间:2012-03-20 06:23:21

标签: objective-c inheritance subclass superclass

在阅读Apple开发网站的“目标c指南”时,我收到了一些问号。从这个question我已经知道sub和超类'initialize'方法都被调用了。我的问题是;为什么会这样?我从那篇文章中也知道初始化总是被调用,但是当我从不使用超类本身,而且只使用子类时,它是否正确?

关于这个主题的一个轻微的相关问题:

  • 子类'包含'它的超类,以及一些新的方法/变量,或
  • 是从超类复制到子类的所有内容吗?

在第一种情况下,我会理解初始化方法将被发送到子类中的'包含'超类,在第二个选项中,我希望子类的initialize方法明确地调用[super initialize],它没有。

谢谢!

1 个答案:

答案 0 :(得分:4)

+initialize调用是特殊的,并且为每个类显式调用。这是在您习惯看到的正常继承链之外完成的。 +initialize将在第一次访问时调用每个类,子类和类别(是的,类别都有自己的初始化)。