通常在我们定义静态方法,返回实例对象时,将返回值类型定义成instancetype
,除了instancetype
修饰外,还有id
和__kindof
两种关键字,接下来简单介绍下三者的区别
-
id
- 返回值为
id
类型- 坏处是不能在编译的时候检查真实类型,可以用任意类型接收,不会有任何警告
- 在使用实例时无法使用点语法,归根结底还是因为类型
- 返回值为
-
指定具体类型
- 返回值为指定的具体类型
- 缺点是继承后,子类调用方法返回值仍然是父类方法中指定的类型
- 返回值为指定的具体类型
-
instancetype
- 返回值为
instancetype
类型- 相对于
id
类型可以自动识别当前实例的类(应用于继承) - 缺点与
id
类似,在调用方法时,还是不能确定返回值真实类型,仍然可以使用任意类型接收
- 相对于
- 返回值为
-
__kindof XXX类名
iOS 9 新增- 返回值为
__kindof XXX类名
当前类或者它的子类- 在调用的时候,通过编译器的智能提示可以直观的看到返回值具体类型
- 返回值为
网友评论