首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
Samcooke
掘友等级
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
17
文章 17
沸点 0
赞
17
返回
|
搜索文章
最新
热门
NSInvocation的使用
再一种就是 NSInvocation。 第一种方式比较简单,能完成简单的调用。 但是对于 >2 个的参数或者有返回值的处理,那就需要做些额外工作才能搞定。那么在这种情况下,我们就可以使用NSInvocation来进行这些相对复杂的操作。
Runtime(五).消息转发
搜__objc_forward_handler,搜不到。猜测应该是C方法。搜_objc_forward_handler.搜到后无法再进行下去,因为到此后就不是开源的了。 首先会调用forwardingTargetForSelector方法,如果实现了该方法,且返回值不为空的话,…
Runtime(四).动态解析
类对象会调用[cls resolveInstanceMethod:sel],元类对象调用[nonMetaClass resolveClassMethod:sel],然后把这个方法实现,放入class_rw_t的mthods里,注意不是放缓存(除非手动调用),是放方法二维数组里。
Runtime(三). 消息发送
objc_msgSend的执行流程可以分为3大阶段。 本节内容主要讲消息发送。 搜索objc_msgSend. 找到:objc-msg-arm64.s receiver不为nil,进入CacheLookUp(传参数NORMAL),查找缓存。如果找到CacheHit,call o…
Runtime(二) isa
has_assoc是否是设置过关联对象,而不是此时是否有关联对象。如果设置过,即使取消了,那么也算设置过。weakly_referenced 同理。 类的初始信息,不包含分类信息。 最开始是没有rw的,运行的时候才创建rw,把ro的内容和分类的信息放在rw里。 其他:C语言的字…
Runtime(一)、位域
要想学习Runtime,首先要了解它底层的一些常用数据结构,比如isa指针 在arm64架构之前,isa就是一个普通的指针,存储着Class、Meta-Class对象的内存地址。
值传递,指针传递与引用传递
本篇文章均为本人理解,可能有误。 引用是C++的概念,引用就是别名。 区分技巧:在分析上面代码时,可以从变量标识符开始从右往左看,最靠近标识符的是变量的本质类型,而再往左即为对变量类型的进一步修饰。 标识符a的左边紧邻的是&,证明a是一个引用变量,而再往左是*,可见a是一个指针…
block
1. block的本质 可见block就是一个指针地址(带*),本质上是__main_block_impl_0结构体,传减去一个方法__main_block_func_0(block的函数体)和__main_block_desc_0_DATA(描述信息包括block的长度等)的…
Category
category编译之后的底层结构是struct category_t,里面存储着分类的对象方法、类方法、属性、协议信息。 1.通过Runtime加载某个类的所有Category数据。 2.把所有Category的方法、属性、协议数据,合并到一个大数组中,后面参与编译的Cate…
全局变量、static、extern
1. 定义 学习过Java 或者 C 语言的朋友应该很清楚static关键字吧?在某个类中声明一个static 静态变量, 其他类中想使用它或者修改它不用new 这个对象 ,直接使用它的类名方可直接拿到这个静态变量的对象,遍可以在其他类中任意修改这个变量的数值。它是存于全局变量…
下一页
个人成就
文章被点赞
11
文章被阅读
22,348
掘力值
619
关注了
11
关注者
5
收藏集
0
关注标签
8
加入于
2018-06-13