Root、父类和子类
一般,NSObject是我们所说的Root类
父类和子类的相关术语:superclass/parent class, subclass/child class
子类可以继承父类的非私有实例变量和方法
⚠️ 在父类的interface中申明,并且implementation中不申明,子类才能访问其实例变量
⚠️ 在父类的implementation中申明或合成的实例变量,子类无法直接访问;需要用自定义的getter或setter方法来访问
例子:
1 | @interface ClassA: NSObject { |
OC寻找方法的机制
首先,检查对象所属的类,以查看是否在该类中使用特定名称显式地定义了方法。如果是,这就是我们使用的方法。如果没有定义,则选中父类。如果这里定义了方法,就用它。如果没有,搜索仍在继续。
父类会被检查,直到发生以下两种情况之一:要么找到包含指定方法的类,要么在返回根类之后没有找到该方法。如果第一个发生了,一切都准备好了;如果出现第二种情况,就会出现问题,并生成如下警告消息: warning: ‘ClassB’ may not respond to ‘-inity’
通过继承扩展
点类和对象分配
测试