首页
归档
标签
关于
RSS
Objective-C
「重学iOS」所谓Runtime
2020-12-19
runtime是个啥 Objective-C 扩展了 C 语言,并加入了面向对象特性和 Smalltalk 式的消息传递机制。而这个扩展的核心是一个用 C 和 编译语言 写的 Runtime 库。它是 Objective-C 面向对象和动...
Read more
「重学iOS」Objective-C中super的相关内容
2020-12-19
首先我们来看一下这段代码: 我们发现最终的打印结果和我们预期的不一样,按我们的思路Super就是指的的Dog的父类Animal,Animal调用class方法应该返回Animal 但是结果却不是这样,这是为什么?首先我们先将这段代码转换成...
Read more
「重学iOS」Objective-C中方法的传递过程
2020-12-19
我们现在已经清楚方法的调用顺序了,实现从缓存中找没有的话再去rw_t中找,那么再没有的话就去其父类中找,父类中查找也是如此,先去父类中的cache中查找,没有的话再去父类的rw_t中找,以此类推。如果查找到基类还没有呢?难道就直接报unre...
Read more
「重学iOS」Objective-C中的方法缓存
2020-12-18
我们在分析清楚方法列表和方法的结构后,我们再来看一下方法的调用是怎么一个流程呢?是直接去方法列表里面遍历查找对应的方法吗? 其实不然,我们在分析类的结构的时候,除了bits(指向类的具体信息,包括rw_t、ro_t等等一些内容)外,还有一个...
Read more
「重学iOS」Objective-C中Class的具体结构
2020-12-18
我们之前在讲分类的时候讲到了类的大体结构,如下图所示: 就如我们之前讲到的,当我们调用方法的时候是从bits中的methods中查找方法,分类的方法是排在主类方法前面的,所以调用同名方法是先调用分类的,而且究竟调用哪个分类的方法要取决于编...
Read more
「重学iOS」分类(Category)的本质及其与类扩展(Extension) / 继承(Inherit)的区别
2020-12-17
分类的概念 分类是为了扩展系统类的方法而产生的一种方式,其作用就是在不修改原有类的基础上,为一个类扩展方法,最主要的是可以给系统类扩展我们自己定义的方法。 如何创建一个分类? Cmd+N,iOS-->Objective-C Fil...
Read more
「重学iOS」Objective-C对象的本质及分类
2020-12-17
Objective-C的底层都是通过C/C++来实现的,所以Objective-C中的对象也会转化成C/C++中的某一个数据结构。 我们在终端里通过指令 xcrun -sdk iphoneos clang -arch arm64 -rew...
Read more
「重学iOS」详解isa
2020-12-17
我们在研究对象的本质的时候提到过isa,当时说的是isa是个指针,存储的是个类对象或者元类对象的地址,实例对象的isa指向类对象,类对象的isa指向元类对象。确实,在arm64架构(真机环境)前,isa单纯的就是一个指针,里面存储着类对象或...
Read more
「重学iOS」重新认识Objective-C
2020-12-17
Objective-C作为一门面向对象的语言,自然具有面向对象的语言特性:封装、继承、多态。它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定、动态加载等)。 动态:必须到运行时(runtime)才会做的一些事情。 静...
Read more