IOS---Runtime 之理解

1:弄了三天的IOS Runtime 终于有了重新认识,因为 Objective-C 是一门动态语言,所以它需要一个运行时系统 ,一切语法结构都是先转化为对应的C语言后再运行的
2:Runtime 应用场景非常多,只是我们没有发现,比如如何打印日志,方法交换,方法交换必然涉及到分类的概念,用刀分类的概念必然会想到在分类中加属性可以吗?可以为什么?不可用为什么?
答曰:正常的思路下在分类中是不可以添加成员属性变量的,为什么?1)分类里面不能添加Ivar是因为分类本身并不是一个真正的类,它并没有自己的ISA 类最开始生成了很多基本属性,比如IvarList,MethodList,分类只会将自己的method attach到主类,并不会影响到主类的IvarList。这就是为什么分类里面不能增加成员变量的原因。 2)category是无法添加实例变量的(因为在运行期,对象的内存布局已经确定,如果添加实例变量就会破坏类的内部布局,这对编译型语言来说是灾难性的)如何添加呢?可以Attache
3:然后可以在项目中时时用到Runtime 数据解析,MJExtension 和YYModel 参照项目中使用,的确花样百出,但是效率最高的应该是自己手写,第三方框架个人比较偏好YYModel 参照网站 https://blog.ibireme.com/2015/10/23/ios_model_framework_benchmark/
4:方法交换
如何在每个类中打印日志呢?思索下(load )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值