O-C相关-09-id 类型与应用

时间:2022-06-07 11:29:02

09-id 类型与应用

 

1, 使用 NSObject 访问子类对象方法

 

代码在编辑的时候, Xcode 会实时检查语法情况. 如果调用某个对象的方法, 在声明中没有该方法的声明, 那么就会报错.

 

但是对齐发消息, 是可以编译通过的. 但是运行时就不一定了.

 

 

2, id 类型

 

虽然可以利用发送消息执行可以调用子类方法, 但是相对较麻烦. 苹果提供了一个 id 类型, 该类型允许引用任何对象, 并且不会检查类型, 在使用的时候才会检查.

 

 

3, id 类型与 NSObject 的区别

 

-> NSObject 会进行编译检查

-> Id 类型只有到运行时才知道数据类型是什么

-> 但是如果 id 类型指向的对象中没有方法,也无法发消息

 

 

4,instancetype 类型

 

在 iOS 5.0 之后, 引入了 instancetype 类型的数据. 它和 id 类型类似

-> instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象

-> instancetype只能作为返回值,不能像id那样作为参数