![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
runtime机制
camellia丶哑灬
兴趣是最好的导师
展开
-
初识 Runtime机制 - 发送消息
runtime:简称运行时,耳熟能详,其中最主要的就是消息机制 C与OC的比较 1.对于C语言,函数的调用在编译的时候就会决定调用哪个函数 2.对于OC的函数:属于动态调用过程。在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。 事实证明 1.在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错。原创 2016-06-10 00:46:17 · 224 阅读 · 0 评论 -
Runtime -- 交换方法
交换方法的开发场景:系统自带的方法功能不全,给系统自带的方法扩展一些功能,并且保持原有的功能 解决方案: 1.继承系统的类,重写方法 2.使用runtime,交换方法 #例如: UIImage *image = [UIImage imageNameed:@""]; // 传入图片名称#这个耳熟能详的方法相信大部分人都用过,但是imageNamed加载图片,并不知道图片是否加载成功原创 2016-06-10 00:47:23 · 343 阅读 · 0 评论 -
runtime - 动态添加方法
动态添加方法: 动态添加就运用到懒加载 开发场景:如果一个类方法很多,加载类到内存的时候也比较耗费资源,需要给每个方法生成一个映射表(这个词我也不懂),可以使用动态给某个类添加方法。 Person *p = [[Person alloc]init]; //performSelector:即为动态添加方法 [p performSelector:@selector(eat) withO原创 2016-06-10 00:47:54 · 974 阅读 · 0 评论 -
runtime -- 动态添加属性
#现在刚搬好家,收拾好,目前不能在mac下使用网络,所以我在win下面写的代码,不正确请见谅。给分类添加属性 原理:给一个类声明属性,本质就是给这个类添加关系,并不是直接把这个值得内存空间添加到类的内存空间。 #原理的意思 --- 例: 给一个Person类添加一个name属性,给name属性赋值 赋值形式不是在Person类里面创建这个name对象, 而是在Person类外面创建这个对象,并使原创 2016-06-10 00:48:19 · 287 阅读 · 0 评论 -
一段程序代码 --- 实现解析字典,自动转换生成属性。
创建一个NSObjcet的分类//通过解析字典自动生成属性代码 #import <Foundation/Foundation.h>@interface NSObjcet (Property) +(void)createPropertyCodeWithDict:(NSDictionary *)dict; @end#实现文件 #import "NSObject+Property.h"@implement原创 2016-06-10 21:45:18 · 380 阅读 · 0 评论 -
KVC字典转模型以及常见错误解决(接上昨晚的自动生成属性)
接上昨晚的数据源继续用,然后将自动生成的属性贴在模型中# .h 文件中是属性(就不用我写了吧 T_T) #模型的属性名跟字典 -- 一 一对应 // 属性 // 定义一个类方法进行字典转模型 + (__kindof Model *)modelWithDict:(NSDictionary *)dict; ## .m 文件中 + (__kindof Model *)modelWithDict:(NS原创 2016-06-12 10:24:22 · 1302 阅读 · 0 评论 -
runtime -- 实现字典转模型
runtime与KVC字典转模型的区别: 1.KVC:遍历字典中所有的key,去模型中查找有没有对应的属性名。 2.runtime:遍历模型中的属性名,去字典中查找。 #依旧是NSObjcet的model分类 //字典转模型 -- runtime 实现 #import <Foundation/Foundation.h> #import <objc/message.h>@interface原创 2016-06-12 23:44:18 · 440 阅读 · 0 评论 -
runtime最后一章 --- 接上昨晚字典转模型进行二级转换
我直接在昨晚的model类中进行代码操作了。mac下面没网络,只有手写,谅解哈 # .m文件中 + (instancetype)modelWithDict:(NSDictionary *)dict{ // 创建对应类的对象 id objc =[[self alloc] init]; unsigned int count = 0; Ivar *ivarList = class_co原创 2016-06-14 14:47:14 · 368 阅读 · 0 评论