使用过runtime么,你用runtime做过什么

1.是什么

1> runtime是一套比较底层的纯C语言API,属于1个C语言库,包含了很多底层的C语言API

2>平时编写的OC代码,在程序运行过程中,其实最终都是转成了runtime的C语言代码, runtime算是OC的幕后工作者

下面这就是一个实例,(在前面的文章中讲到过了!通过编译成c语言,我们可以看到底层文件)

OC :

[[Person alloc] init]

上面的Person对象创建时候,

runtime :

objc_msgSend(objc_msgSend(“Person” , “alloc”), “init”)

通过runtime可以动态获取一个对象的所有属性和值也可以获取所有的方法并调用,例如自定义对象的归档需要实现NSCoding协议并实现协议里面的方法,在方法中需要对对象的每一个属性进行归档和反归档,使用runTime不管有多少个属性不需要一个一个的去归档 只需要通过以下代码即可实现:

- (void)encodeWithCoder:(NSCoder*)aCoder{

unsignedintcount =0;

Ivar*ivars =class_copyIvarList([Personclass], &count);

for(inti =0; i

//取出i位置对应的成员变量

Ivarivar = ivars[i];

//查看成员变量

constchar*name =ivar_getName(ivar);

//归档

NSString*key = [NSStringstringWithUTF8String:name];

//KVC取值

idvalue = [selfvalueForKey:key];

[aCoderencodeObject:valueforKey:key];

}

//释放

free(ivars);

}

如果有人问有没有在哪里使用过runtime就回答 在自定义对象的归档的时候使用过,使用了runTime中动态获取对象所有的属性,简化了代码。

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

相关阅读更多精彩内容

友情链接更多精彩内容