首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
浅笑慕
掘友等级
iOS爱好者
|
深圳
虚心若愚,求知若渴
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
14
文章 14
沸点 0
赞
14
返回
|
搜索文章
最新
热门
OC底层-block底层原理探究
NSGlobalBlock 全局类型block,存储在内存中的全局区,这种情况下block,无传入参数无返回值。 NSMallocBlock 堆区类型block,存储在内存中的堆区,这种情况下block会访问外部变量a,对a进行值copy。 NSStackBlock 栈区类型b…
OC底层-应用程序加载初探
应用程序加载,是我们每天都要面对的一个课题。每年的WWDC都会关于应用程序的启动时间做出一些优秀的改进更新说明。具体在程序的底层,应用程序的加载做了哪些工作,我们去一探究竟。 库:是已写好的、供使用的 可复用代码,每个程序都要依赖很多基础的底层库。从本质上,库是一种可执行代码的…
OC底层-方法的本质探究之方法的动态决议和消息转发
动态方法决议是系统给我们的第一个补救的机会。上文我们在慢速查找结束的时候,引入了动态决议的方法resolveMethod_locked。继续向下看源码: 如果是实例化方法,执行resolveInstanceMethod方法。 如果是类方法,执行resolveClassMetho…
OC底层-方法的本质探究之方法的慢速查找
上篇文章分析了,方法的本质是消息的发送,并主要探究了方法的快速查找流程,即去类的缓存中查找。如果缓存中没有查找到,就会JumpMiss,进入__objc_msgSend_uncached流程。 __objc_msgSend_uncached,会走方法列表查询流程MethodTa…
OC底层-方法的本质探究之方法的快速查找
最近工作有点忙,博客和底层之路有点拉下了。之前不怎么写博客,拾起博客的时候虽然每次写的时候很花时间,但是写完的感觉还是很棒。探究的时候可能会枯燥,甚至抓狂,写出来的时候总觉得一切都值得了。也算是鼓励自己坚持下去。 上篇cache_t的结构和写入已经分析了,本篇就看下cache是…
OC底层-揭开cache_t的神秘面纱
这里要注意的是_maskAndBuckets采用了位域的方式存储mask和buckets,节省内存和读取方便。 第一次进来,为capacity申请空间INIT_CACHE_SIZE(4),为buckets申请内存,并且存储buckets和mask,_occupied = 0。 …
OC底层-面试题小试牛刀
isKindOfClass底层源码实现objc_opt_isKindOfClass,这里有个细节llvm在编译阶段做了处理,使得isKindOfClass走objc_opt_isKindOfClass。方法内部实现:拿当前的传入对象的isa,呢么分为2种情况: 1 、传入的ob…
OC底层-类的结构分析
这里直接上图会比较清晰一些,源码的追踪过程这里就不赘述了。主要追踪关键方法objc_class : objc_object。 objc_class的第一个成员isa,源码里虽然注释,但也在提醒我们objc_class继承自objc_object,自带了isa特性。isa的流程也…
OC底层-ISA的前生今世
的流程中,我们知道了OC底层是通过initInstanceIsa把我们的类cls和isa关联起来,我们顺着initInstanceIsa去对今天的主角isa一探究竟。 可以看到在objc_object结构体中,isa是isa_t类型。同时我们找到了isa_t的定义。union是…
iOS工具包-记录自己常用好用的工具集合(持续更新)
macOS工具包SketchV68.0中文版最好用的流程图OmniGraffleMWeb_3.4.1思维导图MindNode501Microsoft_Office_2016命令行神器Go2ShellS
下一页
个人成就
文章被点赞
80
文章被阅读
12,231
掘力值
486
关注了
30
关注者
49
收藏集
0
关注标签
34
加入于
2020-01-10