id、instancetype和__kindof返回值类型

通常在我们定义静态方法,返回实例对象时,将返回值类型定义成instancetype,除了instancetype修饰外,还有id__kindof两种关键字,接下来简单介绍下三者的区别

  • id
    • 返回值为id类型
      • 坏处是不能在编译的时候检查真实类型,可以用任意类型接收,不会有任何警告
      • 在使用实例时无法使用点语法,归根结底还是因为类型
  • 指定具体类型
    • 返回值为指定的具体类型
      • 缺点是继承后,子类调用方法返回值仍然是父类方法中指定的类型
  • instancetype
    • 返回值为instancetype类型
      • 相对于id类型可以自动识别当前实例的类(应用于继承)
      • 缺点与id类似,在调用方法时,还是不能确定返回值真实类型,仍然可以使用任意类型接收
  • __kindof XXX类名 iOS 9 新增
    • 返回值为__kindof XXX类名当前类或者它的子类
      • 在调用的时候,通过编译器的智能提示可以直观的看到返回值具体类型
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容