首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
云先生
掘友等级
iOS开发工程师
|
家里蹲
只争朝夕 不负韶华
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
20
文章 20
沸点 0
赞
20
返回
|
搜索文章
最新
热门
九:底层探索-类的加载
这里再啰嗦一句,大家看底层源码的时候一定要按主线流程去走,多看注释,多看注释,多看注释...... 1. environ_init() 2. tls_init() 3. static_init() 4. lock_init() 5. exception_init() 其实这三个…
八:底层探索-应用程序的加载之dyld
曾经我在面试的时候被问过这么一个问题:点击Run到main函数之间发生了什么?在此也是借这个问题来展开我们的分析。当我们点击Run之后,会经历一个编译到执行的过程,本篇暂时对编译部分不做分析(正在看《程序员的自我修养》这本书,对理解编译很有帮助,后期也会写一篇文章来进行总结和串…
七:底层探索 Runtime(2):消息转发
但是仅仅实现方法签名还不行,根据文档的说明,在实现方法签名的同时还必须实现- (void)forwardInvocation:(NSInvocation *)anInvocation;,两者是同时出现的。底层会通过方法签名,生成一个NSInvocation,将其作为参数传递调用…
六:底层探索 Runtime(1):方法查找
在前面的篇章中我们探索了对象和类,以及属性和方法的存储,接下来我们会对方法进行一个探索,开篇之前我们对Runtime进行一个简单的介绍。 1. Runtime介绍 Objective-C是门动态的语言,那么它需要有编译器,而Objective-C是以Clang作为编译器前端,L…
五:类原理之cache_t的探索
类的结构中还剩一个cache_t我们还没有探究,今天我们就来探究在cache_t。 1. 定义 2. 成员 之前的文章我们通过内存偏移的方式打印出了ro,现在我们用同样的方式,去获取cache_t。 当运行到eat方法,打印cache_t,注意_occupied = 2,确实缓…
四:类原理之类的结构分析以及成员变量,属性,方法的探究
通过之前的文字介绍,我们知道了对象是如何创建的,也知道了对象怎么通过 isa 找到类的,那么下一步我们将会对类进行进一步探索。 isa 之前已经探究过,这里被注释说明是继承过来的,可以看到后面的objc_object,这也说明其实类也是个对象。 superclass 父类指针。…
三:对象原理之isa的本质探究
在开头我们先介绍一下,isa有两种,一种是单纯指针(Class类型),另一种是nonpointer还包含一些其他信息,以优化内存。我们都知道一个isa占8字节64位,所以这每一位都包含一些类的相关信息,便于进行内存优化。 1. isa的定义 2. Class的定义 3. bit…
二:对象原理之对象的内存结构
1. 数据成员对⻬规则 2. 结构体作为成员 如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储.(struct a里存有struct b, b里有 char, int, double 等元素,那b应该从8的整数倍开始存储)。 3. 收尾工作…
一:对象原理之alloc & init 探究
今天的主题就是研究alloc和init,大家平时大多都是这样写的 [XXX alloc] init],那么我们从何入手呢?当然就是这里面的alloc。开篇之前先介绍下如何跟踪调试的小技巧 最后会来到这里,这样就很明朗了, objc_alloc 方法的实现在 libobjc.A.…
个人成就
文章被点赞
27
文章被阅读
11,776
掘力值
506
关注了
137
关注者
14
收藏集
22
关注标签
19
加入于
2019-10-23