随笔分类 - iOS浅析原理
发现那些美
摘要:一、简介 aureleasePool,顾名思义,自动释放池。它在iOS系统的内存管理中,有着极其重要的作用。放入其池中的对象,最终系统通过它进行释放,不用程序员手动去管理。在MRC中,当然还是需要手动调用一个autorelase方法将对象添加进自动释放池,在ARC中,这一步直接省略,只需要在 @au
阅读全文
摘要:一、介绍 在OC中每一个对象持有的变量都是实例变量,实例变量包括成员变量和属性变量,在runtime中用Ivar表示对象的实例变量。其实,runtime源码中可以看到,Ivar也是一个结构体(基本上在runtime中变量的声明都是用结构体实现的),如下所示,同时苹果为这个结构体另外定义了一个结构体指
阅读全文
摘要:一、介绍 在OC中我们可以给任意的一个类以@property的格式声明属性,当然对于这个属性也会采用某一些属性关键字进行修饰,那么属性的真正的面目是啥样子的呢?其实,runtime源码中可以看到,property是一个结构,如下所示,只不过苹果为这个结构体另外定义了一个结构体指针。 二、函数 正如我
阅读全文
摘要:一、介绍 什么是KVO?全称key-value-observer,键值观察,观察者设计模式的另一种实现。其作用是通过观察者监听属性值的变化而做出函数回调。 二、原理 KVO基于Runtime机制实现,使用了isa的混写技术 监听者监听类A的某一个属性的变化,系统会动态为类A创建一个子类NSKVONo
阅读全文
摘要:一、介绍 objc_copyClassNamesForImage:拷贝动态库类列表,也即当前工程下自己创建的所有类 objc_getClassList:获取所有类列表,也即当前工程下所有类(含系统类、cocoPods类) 二、代码 三、演示 测试: 结果:
阅读全文
摘要:一、介绍 UITableView和UICollectionView是iOS开发最常用的控件,也是必不可少的控件,这两个控件基本能实现各种各样的界面样式。 它们都是通过代理模式监测数据源的有无对数据进行UI的展示或隐藏。 如果没有数据时,UITableView和UICollectionView可能会展
阅读全文
摘要:一、介绍 模型转字典,字典转模型,这是开发中最基本的功能。系统类中提供了一个setValuesForKeysWithDictionary方法来实现字典转模型,至于模型转字典,这个就需要使用runtime来实现了。其实字典和模型的互转可以完全使用运行时runtime来实现。典型的第三方有MJExten
阅读全文
摘要:一、介绍 OC是一门动态性语言,其实现的本质是利用runtime机制。在runtime中,对象调用方法,其实就是给对象发送一个消息,也即objc_msgSend()。在这个消息发送的过程中,系统会进行一系列的操作,最终实现消息的成功转发或者异常的抛出。这个传递的过程就是消息的转发。 消息转发过程:1
阅读全文
浙公网安备 33010602011771号