模板模式

概述 坏味道的代码 模板设计模式 总结 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。GoF提出了23种设计模式,本系列将使用Swift语言来实现这些设计模式 概述 模板设计模式是最基础的设计模式之一,在网上被称作模板方法模式,但实际运用时这种设计模式却不仅仅局限于方法。因此笔者对于模板设计模式的理解定义如下: 【模板设计模式】将常见的方法以及对象成员进行封装,创建了一个实现一组抽象方法以及抽象对象成员作为对象实现使用的模板 坏味道的代码 在Swift中有个有趣的数据结构——元组Tuples,现在有这么一段代码。其中传入的每一个元祖表示某个商品的数据类型: func calcul...
Click to read more ...

SirKit应用

创建Intents Extension 代码实现 事件UI 尾言 在6月14日凌晨的WWDC2016大会上,苹果提出iOS10是一次里程碑并且推出了十个新特性,大部分的特性是基于iPhone自身的原生应用的更新,具体的特性笔者不在这里再次叙述,请看客们移步WWDC2016下载自行观赏。要说里程碑在笔者看来有些夸大其实了,不过新增的通知中心联动3D Touch确实为人机交互带来新的发展,另外一个最大的亮点在于Siri的接口开放。在iOS10中提供了SiriKit框架在用户使用Siri的时候会生成INExtension对象来告知我们的应用,通过实现方法来让Siri获取应用想要展示给用户的内容 在iOS10之后,苹果希望Siri能够给用户带来更多的功能体验,基于这...
Click to read more ...

认识CoreAnimation

在iOS中,普通的动画可以使用UIKit提供的方法来实现动画,但如果想要实现复杂的动画效果,使用CoreAnimation框架提供的动画效果是最好的选择。那么两种动画方案相比之下,后者存在的主要好处包括不仅下面这些: 轻量级的数据结构,可以同时让上百个图层产生动画效果 拥有独立的线程用于执行我们的动画接口 完成动画配置后,核心动画会代替我们完全控制完成对应的动画帧 提高应用性能。只有在发生改变的时候才重绘内容,消除了动画的帧速率上的运行代码 在CoreAnimation框架下,最主要的两个部分是图层CALayer以及动画CAAnimation类。前者管理着一个可以被用来实现动画的位图上下文;后者是一个抽象的动画基类,它提供了对CAMediaTiming和CA...
Click to read more ...

单元测试

维基百科对单元测试的定义如下: 在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。 在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。 根据不同场景,单元的定义也不一样,通常我们将C语言的单个函数或者面向对象语言的单个类视作测试的单元。在使用单元测试的过程中,我们要知道这一点: 单元测试并不是为了证明代码的正确性,它只是一种用来帮助我们发现错误的手段 单元测试不是万能药,它确实能帮助我们找到大部分代码逻辑上的bug,同时,为了提高测试覆盖率,这能逼迫我...
Click to read more ...

消息机制

关于静态语言和动态语言 消息发送 方法缓存 消息转发 消息机制黑魔法 尾话 我们都知道,在iOS中存在这么一个通用类类型id,它可以用来表示任何对象的类型 —— 这意味着我们使用id类型的对象调用任何一个存在的方法,编译器都不会进行报错。比如下面这段代码: id wrongArr = @"This is a NSString instance."; [wrongArr addObject: @"The operate will crash your application"]; 不出意外的,编译器会给你这么一个信息然后华丽丽的崩溃了。相信几乎所有的开发者们在开发生涯中都遇到过这种崩溃信息: -[__NSCFConstantString addObj...
Click to read more ...

碎片动画

遮罩视图 动画实现 轮播碎片动画 最后 从最开始动笔动画篇的博客,至今已经过去了四个多月。按照原本自己的规划,本篇博客应该是CoreAnimation核心的开篇。但这段时间回头看了看自己之前的动画文章,发现用来讲解动画的例子确实不那么的赏心悦目,说人话就是之前的动画略丑。于是这段时间总是想着使用最基础的动画知识来实现一个好看的效果,却迟迟想不到该怎么做(/(ㄒoㄒ)/~~本人的想象力果然是差得很),直到在网上看到一个惊艳的碎片化动画,于是自己实现之后拿来讲解一下: 遮罩视图 在UIView中有一个maskView属性,这个属性是我们今天实现动画的最重要的变量。这个属性在iOS8之后开始使用,用来表示视图的遮罩。什么是遮罩呢?我想了很久都没有找到合适的比喻来介绍...
Click to read more ...

超链接富文本

coreText基础 文字排版 图文混编 进一步封装 关于TextKit 结尾 当喜悦、愤怒、疑惑、懵逼等等这些情绪都能使用表情表达时,我干嘛还要打字 这是一个移动端快速发展的时代,不管你承不承认,作为一个app开发者,社交属性总是或多或少出现在我们开发的业务需求中,其中作为IM最重要的组成元素——表情,如何进行文字和表情混合编程是一门重要的技术。 本文将使用iOS中的coreText框架来完成我们的图文混编之旅,除此之外,还实现文本超链接效果。在开始本篇的代码之前,我们先通过iOS框架结构图来了解CoreText所处的位置: coreText基础 首先我们要知道图文混编的原理 —— 在需要显示图片的文本位置使用特殊的字符显示,然后在绘制这...
Click to read more ...