Blocks深入理解和详解 发表于 2018-04-28 | 分类于 iOS 介绍Block是C级语法和运行时特性。它们类似于标准C函数,但是除了可执行代码之外,它们还可能包含对自动(堆栈)或托管(堆)内存的变量绑定。因此,Block可以维护一组状态(数据),它可以用来在执行时影响行为。 您可以使用Blocks来组合函数表达式,这些表达式可以被传递给API,可选地存储,并由多 ... 阅读全文 »
iOS仿QQ消息动画 发表于 2018-04-18 | 分类于 iOS 此次是通过CALayer和CoreGraphics结合实现了QQ消息列表中滑动使数字消失的动画。在滑动的过程中,中间会逐渐变瘦。效果如下图: 实现思路思路是通过两个圆加一个自己绘制的图形三部分组成,并且是在理想条件下的动画,然后再进行坐标的微调。 所谓的理想条件如下图1:两个圆大小是一样,同时AB ... 阅读全文 »
iOS中CALayer和CoreAnimal以例说教 发表于 2018-04-13 | 分类于 iOS UIKit中我们使用的UIView、UILabel等控件其实显示的载体都是CALayer及其子类,比如CATextLayer、CAScrollLayer等。我们在做Layer层动画的时候则使用的CAShapeLayer比较多。通过CoreAnimal中的CABasicAnimation结合path来 ... 阅读全文 »
iOS文件内存映射详解(mmap) 发表于 2018-04-03 | 分类于 iOS 文件内存映射(mmap)之前看过很多文章提及到,但是都没有写iOS中具体的实现,只是都说对于大文件读写效率比较高等。所以作者就专门研究了以下mmap技术,并且实现了一下 mmap文件映射是将文件的磁盘扇区映射到进程的虚拟内存空间的过程。一旦被映射,您的应用程序就会访问这个文件,就好像它完全驻留在内存 ... 阅读全文 »
读YYCache源码总结 发表于 2018-04-02 | 分类于 iOS 开头俗话说三人行必有我师,所以我们得多向他人学习。于是选了YYCache这一大神开源的缓存框架进行代码的研究和学习。作者这里仅仅做一个自身的总结和将一些感悟写出了。 思路简析YYCache包含两部分:内存缓存(YYMemoryCache)和物理缓存(YYDiskCache)。通过YYCache对两者 ... 阅读全文 »
算法(调整奇数偶数顺序) 发表于 2018-03-26 | 分类于 数据结构和算法 题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分 分析最简单的思路就是从头开始遍历数据,如果遇到一个偶数,则将该位置的偶数取出,然后把位于该数字后边的所有数据都往前移动一位,然后将取出来的数字放到最后一位。此方法时间复杂度为O ... 阅读全文 »
算法(打印1到最大的n位数) 发表于 2018-03-26 | 分类于 数据结构和算法 题目 数组数字你,按顺序打印出从1到最大n位十进制数。比如输入3,则打印出1、2、3…999 这个题目大家看着其实很简单,而且很快就能写出如下的代码:12345678910void printNumber(int n){ int number = 1; int i = 0; whi ... 阅读全文 »
iOS线程同步 发表于 2018-03-23 | 分类于 算法 线程同步提到多线程大家肯定会提到锁,其实真正应该说的是多线程同步,锁只是多线程同步的一部分。 多线程对于数据处理等方面有着优异的表现和性能,然后多线程如果存在着共享资源的时候,这时候不得不会出现脏数据或者拿不到想要的数据。苹果给我了提供了如下的同步工具 原子操作原子操作其中一个就是我们常见的atom ... 阅读全文 »
算法(替换空格) 发表于 2018-03-15 | 分类于 数据结构和算法 题目 请实现一个函数,把字符串中的每个空格替换成”%20”。例如输入“we are happy”,则输出“we%20are%20happy”,并且时间复杂度为O(n) 分析第一种思路首先看题目,替换的话很简单。从头开始遍历遇到空格就替换成”%20”,但是此时其他的字符串则要后移。如下图 这样的话也 ... 阅读全文 »
iOS网络层详情和优化 发表于 2018-03-15 | 分类于 iOS HTTPHTTP方法HTTP属于应用层。具有以下方法: GET 最常见 HEAD 服务器只返回头部。比如可用于了解资源情况,看看某个对象是否存在,测试资源是否被修改了。 PUT 向服务器写入文档,是全部更新。 PATCH 局部更新。比如我们有一个UserInfo,里面有userId、userNam ... 阅读全文 »