Runtime

作者: 绍清_shao | 来源:发表于2020-06-08 15:16 被阅读0次

概述

  1. runtime 是什么
  2. isa指针
  3. runtime 怎么添加属性,方法等
  4. runtime 如何实现weak属性
  5. runtime 如何通过selector 找到对应的 IMP 地址?
  6. _objc_msgForward 函数是做什么的?直接调用它将会发生什么?
  7. 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?
  8. 什么是method swizzling(俗称黑魔法)
  9. Category 的实现原理?
  10. Objective-C 如何实现多重继承?

结构模型

  1. 介绍下runtime的内存模型(isa、对象、类、metaclass、结构体的存储信息等)
  2. 为什么要设计metaclass
  3. class_copyIvarList & class_copyPropertyList区别
  4. class_rw_t 和 class_ro_t 的区别
  5. category如何被加载的,两个category的load方法的加载顺序,两个category的同名方法的加载顺序
  6. category & extension区别,能给NSObject添加Extension吗,结果如何
  7. 消息转发过程和优劣
  8. IMP、SEL、Method的区别和使用场景
  9. load、initialize方法的区别什么?在继承关系中他们有什么区别

实践

  1. 关联对象(AssociatedObject)给分类添加属性
  2. 遍历类的所有成员变量(修改textfield的占位文字颜色、字典转模型、自动归档解档)
  3. 利用 class_copyIvarList 实现 NSCoding 的自动归档解档
  4. 交换方法实现(交换系统的方法)
  5. 利用消息转发机制解决方法找不到的异常问题
  6. KVC 字典转模型

参考答案

runtime 是什么?

Runtime 又叫运行时,一套C语言写的API。在编码过程中,可以给任意一个对象发送消息。在编译阶段确定了要向接收者发送这条消息,在运行时,接受者会响应和处理这条消息。

OC的源代码都会先被编译器翻译成C或C++代码,然后在编译成汇编代码。所以OC是C的超集,有很多C的影子。

OC类对象、实例对象的内存结构

参考链接

神经病院 Objective-C Runtime 入院第一天—— isa 和 Class

相关文章

网友评论

      本文标题:Runtime

      本文链接:https://www.haomeiwen.com/subject/fppvyctx.html