静态类型检查总结

  • 对于id类型的变量,调用任何方法都能够通过编译(调用不存在的方法时候会抛出运行时错误)

id类型可以存储任何类型的对象,无法通过—>来获取类的实例变量和方法。

  • id类型和定义了为其他类型的对象可以相互赋值

赋值操作包括=赋值,传参数,和返回值。

  • 强类型变量(静态类型),如果调用类或者父类中不存在的方法,编译器会抛出警告
  • 若是静态类型变量,子类型的实例变量可以赋值给父类的实例变量
  • 若是静态类型变量,父类型的实例变量不可以赋值给子类的实例变量
  • 判断哪个类的方法被执行,需要查看实际执行这个变量的类型(动态性)
  • id类型

为什么id 类型 不是 *id 呢?
objc/objc.h中的定义

/// A pointer to an instance of a class.
typedef struct objc_object *id;

A pointer to an instance of a class.意思是指 id是指向类实例的一个指针,所以id本身就是一个指针,不需要加*号了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 2,108评论 0 9
  • 1.1 什么是自动引用计数 概念:在 LLVM 编译器中设置 ARC(Automaitc Reference Co...
    __silhouette阅读 5,498评论 1 17
  • 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的...
    西木阅读 30,906评论 33 466
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,672评论 30 472
  • 人活在这个世界,都不信鬼神,其实我也不信,可是总有一些事情科学是解释不了。再说鬼神是个单行道,你死后就是知道有鬼...
    一月半阅读 403评论 0 0

友情链接更多精彩内容