左边如果是实例对象右边应该传类对象
左边如果是类对象右边应该传元类对象
此题考查:supper的本质、栈空间(分配局部变量是从高地址往低地址分配的)、消息机制、访问成员变量的本质(找到对象的内存,然后找到对象内存里面的成员,就是跳过isa占用的8个字节找到下一个成员)。
截屏2020-09-22 下午3.00.33.png 截屏2020-09-22 下午3.32.03.png 截屏2020-08-01 下午10.19.12.png 截屏2020-08-01 下午10.31.20.png 截屏2020-08-01 下午10.38.21.png 截屏2020-08-01 下午10.38.33.png 截屏2020-08-01 下午10.38.46.png 截屏2020-08-01 下午10.39.01.png 截屏2020-08-01 下午10.39.13.png 截屏2020-09-23 下午1.31.53.png 截屏2020-08-02 上午10.54.43.png 截屏2020-08-02 上午10.55.00.png 截屏2020-08-02 上午10.56.21.png 截屏2020-09-23 下午2.23.35.png 截屏2020-09-23 下午4.39.32.png 截屏2020-09-23 下午9.23.56.png1、oc的方法调用/oc消息机制?
(1)oc中的方法调用其实都是转成了objc_msgSend函数的调用;
(2)objc_msgSend底层有三大阶段:消息发送、动态解析、消息转发。
2、什么是runtime?
(1)oc是一门动态性很强的编程语言,允许很多操做推迟到运行时进行;
(2)oc的动态性是有runtime支撑和实现的,runtime是一套c语言的API,封装了很多动态性的函数;
(3)平时编写的oc代码底层都是转换成runtimeAPI进行调用的。
3、runtime在项目中的具体应用?
(1)利用关联对象(objc_setAssociatedObject)给分类添加属性;
(2)遍历类的所有成员变量(修改输入框占位符字体颜色、字典转模型、自动归档解档);
(3)交换方法实现(交换系统方法)(UIFont字体大小、UIButton图片的位置、viewWillAppear进行统一操作);
(4)利用消息转发机制解决方法找不到的异常问题等等。
网友评论