首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
南城同學
掘友等级
iOS开发工程师
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
17
文章 17
沸点 0
赞
17
返回
|
搜索文章
赞
文章( 17 )
沸点( 0 )
iOS底层原理 - load方法
如果没有各类之间没有关系,谁先参与编译,先调用的+load方法。 load方法是通过函数isa指针直接找到方法地址。 注意:如果写成了[Objcet load] ,则转换成了消息发送机制。会先调用分类的+load方法. 可以。 可以继承,意味着可以写成[Object load]…
iOS底层原理 - Runtime - objc_msgSend()(一)
没找到,在当前类class_rw_t的methods方法列表中查找,找到后缓存到当前类的cache中。 如果没排好序了,遍历查找。 如果当前类没找到,去父类的父类的方法列表中查找,找到后缓存到当前类的cache中。 如果父类缓存没找到,去父类的的方法列表中查找,找到后缓存到当前…
iOS底层原理 - 方法缓存 :cache
Class内部结构中有个方法缓存(cache_t),用散列表(哈希表)来缓存曾经调用过的方法,可以提高方法的查找速度。 通过一个函数,传入一个key,算出一个索引index。 如果这个索引冲突了,那就通过+ 1 、- 1或某个算法再算一遍,直到不冲突为止。 由图表看到好多空间没…
iOS底层原理 - 方法 - method_t
不同类中相同名字的方法,所对应的方法选择器是相同的。 本质就是一个"*".
iOS底层原理 - __block的内存管理
_Block_object_assign函数会对__block变量形成强引用(retain)。 在ARC环境下,当block被强引用引用着时,它会自动进行copy操作。 block被copy到了堆上,__block int age = 10按理来说它在栈上的,堆上的指针指向栈上…
iOS底层原理 - __block修饰符
接下来的操作是想在__main_block_func_0中修改main函数中的age,显然是不可能的。 __main_block_func_0中的age是block通过值传递的方式捕获到的age。 缺点:只是临时使用一下,如果使用static或全局变量,那这个数据就会一直在内存…
iOS底层原理 - Block的类型
⚠️:__NSStackBlock___是存储在栈上的,存在的隐患就是随时可能被销毁。所以在ARC环境下,会自动对block进行一次copy操作,将其转换为存储在堆上的__NSMallocBlock__。
个人成就
文章被点赞
35
文章被阅读
22,502
掘力值
476
关注了
14
关注者
13
收藏集
2
关注标签
35
加入于
2019-10-09