10 2019 档案
摘要:一、介绍 在开发中经常使用到第三方的静态框架,格式基本上就是.framework和.a格式的。使用时,会发现我们只能使用无法修改,这就是静态框架的一个好处,私有性。内部实现的代码只有公开者本人知晓,对外界是隔离的,从劳动成果上讲,这也是对作者本人或者公司的一个代码保护。那么,我们如何创建属于自己的静
阅读全文
摘要:一、介绍 在多线程开发中,锁的使用基本必不可少,主要是为了解决资源共享时出现争夺而导致数据不一致的问题,也就是线程安全问题。锁的种类很多,在实际开发中,需要根据情况选择性的选取使用,毕竟使用锁也是消耗CPU的。 本人虽然一直有使用多线程进行开发,但是对于锁的使用和理解并不是特别的深入,这不看到一篇挺
阅读全文
摘要:一、介绍 堆,也是计算中一种很常用的数据结构,它以树的形式存在。 对于树的结构,因为有父节点和子节点的概念,所以一般通过父指针和子指针来实现。但是,也有一种特殊的树不需要使用指针而可以直接通过数组来实现,这种树就是完全二叉树(除了最后一层不用全满,其他层必须全满,而且最后一层的叶子结点都靠左对齐)。
阅读全文
摘要:一、简言 使用数组实现循环队列时,始终会有一个空余的位置预留着,作为一个判决队列已满的条件(当然也可以采用其他方式)。在前面已经用C++介绍了基本的算法,可以去回顾一下https://www.cnblogs.com/XYQ-208910/p/11700048.html。光说不练嘴把式,现在本文使用O
阅读全文
摘要:一、简言 在前面已经用C++介绍过链队列的基本算法,可以去回顾一下https://www.cnblogs.com/XYQ-208910/p/11692065.html。少说多做,还是上手撸代码实践一下才能更好的加深理解,本文采用OC面向对象的思想来实现一个链队列。 二、代码 Node LinkQue
阅读全文
摘要:一、介绍 正是因为队列从队头删除,从队尾添加的特点,所以在使用数组来表现队列时,元素的位置移动采用下标也即出队front++或者入队rear++的方式实现,这里会体现出一个局限性,资源空间的浪费。怎么理解呢? 草图所示: 图示解释: 一个数组队列是满的,arr[0]=a1 ,arr[1]=a2,ar
阅读全文
摘要:一、介绍 队列(Queue),计算机中一种常用的数据结构,具有先进先出FIFO的特点。 通俗一点,就跟生活中超市购物结账排队一样,靠前的结账先走,新来的排在后面等待。 对于队列中的元素,一般都在队头出队,在队尾入队,队头用Q.front表示,队尾用Q.rear表示。 队列的实现有两种方式,通过数组或
阅读全文
摘要:一、介绍 栈是一种数据存储结构,存储的数据具有先进后出的特点。栈一般分为动态栈和静态栈。 静态栈比较好理解,例如用数组实现的栈。动态栈可以用链表来实现。 方式:固定base指针,每次更改top指向入栈的节点,遍历时从top节点遍历即可。 判空:s.top == s.base && s.top ==
阅读全文
摘要:一、介绍 什么是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
阅读全文