Moya 源码分析 发表于 2018-08-27 | 分类于 iOS | | 阅读次数 Moya 源码分析面向协议编程OOP 带来的三个问题 横切关注点 菱形缺陷 动态派发的安全性 面向协议参考文章 面向协议编程1 面向协议编程2 Moya简单介绍和使用Moya是一个基于Alamofire开发的,轻量级的Swift网络层。Moya的可扩展性非常强,可以方便的RXSwift等函数式框 ... 阅读全文 »
UI设计基础知识 发表于 2018-04-11 | 分类于 UI Design | | 阅读次数 UI配色原则最多使用四种颜色:主色、辅色、底色和强调色 色相配色以色相环为基础进行思考配色 同一色相配色 : 色相差为 0 邻近色相配色 : 色相差为 1 类似色相配色 : 色相差为 2 中差色相配色 : 色相差为 3~5 对照色相配色 : 色相差为 6-7 补色色相配色 : 色相差为8 类似 ... 阅读全文 »
AVFoundation(二)-AVAudioPlayer音频播放 发表于 2018-04-11 | 分类于 iOS | | 阅读次数 我们首先先看几个相关概念 音频会话音频会话在应用程序和操作系统之间扮演中间人的角色,提供简单的方法是OS得知应用程序应该如何与iOS音频环境进行交互 可以通过 AVAudioSession.sharedInstance() 来操作系统提供的音频会话 音频会话的分类AVFoundation 有7中分类 ... 阅读全文 »
AVFoundation(一)-文字转换语音播放 发表于 2018-04-08 | 分类于 iOS | | 阅读次数 首先初始化项目,并声明下面两个属性 AVSpeechSynthesizer的示例用于执行具体的文本到语音的会话。对于多个AVSpeechUterance实例,也可以起到队列的作用,进行顺序播放 1234let synthesizer:AVSpeechSynthesizer = AVSpeechSyn ... 阅读全文 »
Swift服务器开发Vapor安装 发表于 2018-01-16 | 分类于 Server-Side | | 阅读次数 官方文档地址https://docs.vapor.codes/2.0/ 安装需要依赖Xcode和Swift编译环境 安装 homebrew (包管理程序) 1/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.co ... 阅读全文 »
设计模式学习-建造者模式 发表于 2017-12-24 | 分类于 iOS | | 阅读次数 基本概念建造者模式主要用于分离对象的创建和配置。调用组件负责提供数据。并负责将配置数据传递给建造者。建造者代替调用组件去创建响应的对象。 好处 使修改对象的默认值变简单 调用组件无需关心太多对象的构建过程 何时使用 对象创建需要进行复杂的配置。构造过程复杂。不想默认配置分散到程序的各个 ... 阅读全文 »
设计模式学习-工厂模式 发表于 2017-12-24 | 分类于 iOS | | 阅读次数 工厂模式工厂方法模式通过选取相关的实现类来满足调用组件的请求,调用组件无需了解这些实现。 何时使用 调用组件需要根据不同情况调用多个类的时候可以考虑使用工厂 下面是示例代码 1234567891011121314151617181920212223242526272829303132333435 ... 阅读全文 »
设计模式学习-对象池模式 发表于 2017-12-22 | 分类于 iOS | | 阅读次数 对象池模式基本概念对象池模式一般用来管理一组可重用对象,以供调用组件使用,它可以为组件提供多个完全相同的对象。组件可以从对象池中获取对象,调用对象后,其他组件在该对象想归还前都无法使用该对象。(Cocoa中 UITableViewCell的重用机制可以通过此模式和工厂模式共同实现) 好处 对象构 ... 阅读全文 »
设计模式学习-单例模式 发表于 2017-12-20 | 分类于 iOS | | 阅读次数 基本概念单例模式是最常用的设计模式之一,能够确保某个类型的对象在应用中只存在一个实力 单例模式的优点 全局只存在一个对象,便于管理 何时使用当需要一个对象,又不想在整个应用范围内赋值它(如打印机服务,音乐播放等)可以使用单例模式 坑 不可以用结果体等值类型实现。并且单例类不应该遵守NSCopyin ... 阅读全文 »
设计模式学习-原型模式 发表于 2017-12-19 | 分类于 iOS | | 阅读次数 原型模式相关概念原型模式通过克隆已有的对象来创建新的对象,已有的对象即为原型. 使用这个模式的好处 隐藏了创建对象的代码,即代码对于使用它的组件是不可见的 避免重复初始化过程。 避免对类模板的依赖 什么时候使用 当需要创建新的实例,但又不想依赖类的构造方法。可以使用这个模式 坑 深 ... 阅读全文 »