摘要:
一、介绍 通知和推送是应用程序中很重要的组成部分。本地通知可以为应用程序注册一些定时任务,例如闹钟、定时提醒等。远程推送则更强大,提供了一种通过服务端主动推送消息到客户端的方式,服务端可以更加灵活地控制通知逻辑,例如广告的推送、定时任务的提醒、即时通信类应用离线消息的提醒等。本文先着重着介绍本地通知 阅读全文
摘要:
一、介绍 在开发中经常使用到第三方的静态框架,格式基本上就是.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 阅读全文