由于forward_imp的实现不开源,也涉及到反汇编,存在知识盲区,这篇文章主要是参考别人的博客,原作者博客(http://yulingtianxia.com/blog/2...
由于forward_imp的实现不开源,也涉及到反汇编,存在知识盲区,这篇文章主要是参考别人的博客,原作者博客(http://yulingtianxia.com/blog/2...
objc_msgSend() 前面说过了,我们在写代码时候的会调用objc_msgSend系列的方法,然后再调用lookUpImpOrForward()方法,其实这只是一个笼...
objc库中初始化方法如下 其中包含了一些列的初始化,以及image的映射和image的加载。其中 _dyld_objc_notify_register(&map_im...
类初始化的时机 每次调用类或是对象的方法的时候,会转换成消息发送,调用类或对象的方法其实就是给类或对象发送消息,发送消息是通过objc_megSend()系列的方法,然后会调...
面向切面编程 AOP面向切面编程在后台开发中已经是一个老生常谈的话题了,如Spring这个框架是面向切面编程实现中尤为具有代表性的一个框架。 关于AOP的描述AOP_百度百科...
FBKVOController实现原理 在上一篇文章中,有用到FBKVOController去实现MVVM模式。现在来分析一下FBKVOController实现原理。 在我们...
模块间的对象传输 上一片分析了MGJRouter的源码,不难发现,用MGJRouter这种以URL形式进行模块间的调用存在一个天然缺陷: 模块间传递复杂对象的时候比较困难 因...
category的实现原理 在上一篇文章iOS runtime中提到了class_rw_t这个结构,在category中的写的方法,协议,属性等会在程序运行经由runtime...
文章目录 OC中类和对象的本质 实例对象,类,元类的关系 类的属性 类的方法 消息发送机制 Runtime api的使用 Runtime 的应用 Runtime是什么? Ru...
树和二叉树 线性结构是节点与节点间是一对一的关系,而树中节点间存在一对多的关系二叉树是一种特殊的树结构,二叉树是最多只有两个孩子节点的树。在现实情况下,有些问题不能用线性结构...
从大类分,排序分为外排序和内排序。内外排序的区别在于是否需要多次从内存外读取数据进行排序。外排序是要多次从外存读取数据到内存。而内排序是一次性读到内存中进行排序。从算法的稳定...
MGJRouter的使用 对于前面的文章,我提及到了组件化其实就是对项目的拆分和组合。在iOS组件化(一)-利用CocoaPods拆分项目和私有化这篇文章提及到了怎么用Coc...
Cocoapods 执行流程 其实利用CocoaPods拆分项目就是根据业务和项目情况,就是把项目分成一个一个子项目,然后通过CocoaPods去将子项目打包成子工程,在主工...
为什么要组件化 随着业务的发展,IT项目的体积变得越来越大,参与开发人员也会增多。开发过程中也会容易出现很多问题,像 1. 项目体积过大造成编译速度变慢,影响开发效率。 2....