1、静态类型识别:在编译期,这是一种静态类型识别的指针变量,编译器将限制指针只能指向Rectangle类或其子类对象,否则将报编译错误
1)静态类型识别的指针不影响其所指对象,只是给编译器提供了更多关于对象的信息,允许编译器在编译时检查。
2)静态类型识别的指针也不影响对象运行时行为
3)可以通过静态类型识别的指针访问其所指对象的共有实例变量
向一个静态类型识别的对象发送一个不属于它的消息时,会有警告
如果把一个对象赋值给一个静态类型识别的指针,必须保证类型兼容,否则有警告。
如果多级继承,父类和子类的方法名相同,返回值不同,那么OC用父类指针指向子类并执行父子共有的方法时,会调用父类的方法。
如果不涉及多态,建议使用静态类型,能使用静态就使用静态。
2、动态类型识别:在运行期,在OC中消息一直在运行时才能够绑定到对应的方法。编译器将上述消息表达式转换成对消息派发函数objc_msgsend的调用。