Runtime 使用场景
来源:互联网 发布:python高手之路 第3版 编辑:程序博客网 时间:2024/05/22 09:04
一:rumtime原理简单分析
runtime是运行时库(Runtime Library),也简称运行时。
它是一个主要是C和汇编写的库,对C进行了特殊的处理,将结构体视为对象,将函数视为方法,使得C有了面向对象的能力,从而才创造了Objective-C。
这点也可以看出,C是编译时语言,而OC是动态运行时语言,所以在编译阶段,尽管OC中的方法没有实现也不会报错,而C会报错。
在运行时,OC语言才进行方法的处理,比如讲[person eat];转换为objc_msgSend(person, @selector(eat));然后通过person的isa指针找到person对应的class,在class中先去cache中通过SEL方法选择器查找对应的method,若缓存中未找到,再去methodList查找,若还未找到,便去父类中查找,如果这个过程中找到了该方法,便会自动将该方法加入cache中,方便下一次的查找,并且,编译器开始执行找到的这个函数。
上面这段文字可以片面的理解runtime的消息机制,消息机制是runtime最主要的机制,如果要在代码中使用,需要导入<objc/messge.h>。
二:runtime 的基本使用场景
首先,对objc_class结构体的内容做个简单的说明:
(一)runtime交换方法
1.创建一个类的分类
2.导入<objc/runtime.h>
3.实现交换并且自定义方法
(二)runtime动态生成getter、setter
由于在类目中添加属性不自动生成setter和getter方法,如果在.m文件中使用@dynamic配置起来就较为繁琐,如果一定要在类目中添加属性,我们可以使用runtime关联方法,简单方便。
比如在类目.h文件中声明了score属性,在.m文件中如下实现:
(三)runtime归档、解档
归解档可以用kvc模式进行操作,但是如果属性过多的话,这样就显得极为繁琐而且容易出错,所以用runtime实现更为的科学和简洁。
(四)runtime字典转模型
(五)runtime添加类方法
- Runtime使用场景
- Runtime 使用场景
- runtime原理和使用场景
- Runtime的实际使用场景
- iOS开发 runtime使用场景
- iOS --- 理解Runtime机制及其使用场景
- ios学习--Runtime的使用场景
- Runtime系列(二)--Runtime的使用场景
- iOS runtime——函数/使用方法/使用场景/示例
- iOS开发:runtime原理简单分析和基本使用场景
- RUNTIME简介以及常见的使用场景(比较全面)
- iOS开发:runtime原理简单分析和基本使用场景
- runTime运用的场景
- Java的Runtime Exception和Checked Exception区别及使用场景
- Runtime基础使用场景-拦截替换方法(class_addMethod ,class_replaceMethod和method_exchangeImplementations)
- 【技术贴】ArcGIS Runtime for Xamarin 使用SPK构建逼真的三维场景
- runtime 使用
- runtime 使用
- 近 100 个 Linux 常用命令大全
- irq分析之irqchip.c
- [git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF
- opencv MSER(最大极值稳定区域)
- eclipse 指定 jdk
- Runtime 使用场景
- Algorithms Every Data Scientist Should Know: Reservoir Sampling
- Java三大框架之spring aop 配置错误一
- TCP长连接和短连接
- 12、Struts2高级技术
- git pull命令更新本地项目的时候遇到“No remote repository specified……”的错误
- Android View坐标getLeft, getRight, getTop, getBottom解惑
- zookeeper伪分布式错误解决:无法创建目录"/opt/beh/logs": 权限不够
- AngularJs是什么?与jQuery有什么不同?