Time's Blog

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 站点地图

  • 公益 404

PromiseKit源码分析

发表于 2019-05-07 | 分类于 开源库 |

源码版本:6.8.4

首先从官方实例开始

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import PromiseKit

func promise3() -> Promise<Int> {
return after(.seconds(1)).map{ 3 }
}

firstly {
Promise.value(1)
}.map { _ in
2
}.then { _ in
promise3()
}.done {
print($0) // => 3
}.catch { error in
// only happens for errors
}.finally {
PlaygroundPage.current.finishExecution()
}
//使Playground等待异步操作执行完在退出
PlaygroundPage.current.needsIndefiniteExecution = true
阅读全文 »

SnapKit源码分析

发表于 2019-05-06 | 更新于 2019-05-07 | 分类于 开源库 |

官方Github说明上的实例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import SnapKit

class MyViewController: UIViewController {

lazy var box = UIView()

override func viewDidLoad() {
super.viewDidLoad()

self.view.addSubview(box)
box.snp.makeConstraints { (make) -> Void in
make.width.height.equalTo(50)
make.center.equalTo(self.view)
}
}

}
阅读全文 »

iOS Audio Unit 实践

发表于 2019-05-05 | 更新于 2019-05-06 |

在iOS平台上,所有的音频框架都是基于AudioUnit实现的,使用AudioUnit会给你带来最大的自由度。

iOS平台音频框架层次图

使用场景

  • Simultaneous audio I/O (input and output) with low latency, such as for a VoIP (Voice over Internet Protocol) application
  • 低延迟的音频I/O场景,比如VoIP(俗称网络电话)
  • Responsive playback of synthesized sounds, such as for musical games or synthesized musical instruments
  • 多路声音合成回放,比如游戏、音乐合成器
  • Use of a specific audio unit feature such as acoustic echo cancelation, mixing, or tonal equalization
  • 使用AudioUnit特有功能,比如回声消除、混合、均衡器等
  • A processing-chain architecture that lets you assemble audio processing modules into flexible networks. This is the only audio API in iOS offering this capability.
  • 想使用音频处理模块组成一个处理链网络(一种图状的数据结构),在iOS平台中AudioUnit是唯一提供这种功能的API
阅读全文 »

iOS的数据持久化总结

发表于 2019-03-19 | 更新于 2019-03-21 | 分类于 基础知识 |

0x01、UserDefaults

特点

  1. UserDefaults是一个单利类
  2. 并且是线程安全的
  3. 数据存储在.plist文件中
  4. 一般保存首选项、少量缓存数据
  5. 不能将自定义的对象保存起来

使用

1
2
3
4
5
6
7
8
9
10
11
12
//取得单利对象
let defaults = UserDefaults.standard

//使用范型方法保存数据
open func set(_ value: Any?, forKey defaultName: String)

//使用对应类型的方法获取数据
open func string(forKey defaultName: String) -> String?

//早期使用UserDefaults保存数据以后 都要使用synchronize方法 使数据同步到plist中 现在苹果建议 废弃掉此方法 并在未来版本中进行标记 不用在调用 synchronize 了
//-synchronize is deprecated and will be marked with the NS_DEPRECATED macro in a future release.
defaults.synchronize()
阅读全文 »

基于Docker搭建LNPM环境

发表于 2018-11-06 | 更新于 2018-11-07 | 分类于 后端技术 |

基于Docker搭建LNPM环境

​ 作为一只iOS前端工程师,最近对PHP产生了兴趣,我认为这不属于不务正业,作为一个程序员不应该把自己局限在一个封闭的领域当中,应该时刻保持好奇心,所以我对“世界上最好的语言”开始了探索~

​ 工欲善其事,必先利其器,首先就要搭建开发环境,由于本人不喜欢因为开发环境把自己的电脑搞得乱七八糟,乱安装一些有的没的依赖开发包,所以我选择虚拟机+Docker来搭建环境~

​ 下面我们开始:

Docker准备

​ 我选择了完全兼容Redhat系统的CentOS7发行版Linux系统,下载Linux并且虚拟机安装系统这里就省略了,准备好Linux系统就可以开始安装Docker了。

删除旧版本

如果以前安装过想重新安装新版本请先使用下面的命令卸载旧版本的Docker,第一次安装请直接到第二步

1
2
3
4
5
6
7
8
9
10
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
阅读全文 »

正则表达式

发表于 2018-10-24 | 更新于 2018-11-06 | 分类于 基础知识 , 通用技术 |

个人根据《正则指引》内容总结记录,侵删!!

最近看了编译原理方面的书,觉得正则表达式非常重要,在各个语言当中都有支持,所以总结了这篇文章,作为学习总结以及记录~

正则表达式

Regular Expression 即描述某种规则的表达式。

字符组

普通字符组

字符组(Character Class)是一组字符,表示 “在同一个位置可能出现的各种字符”

其写法是在一对方括号[和]之间列出所有可能出现的字符。

1
2
#只要字符串中包含数字、字符就可以匹配
re.search("[0123456789]","2") != None #=>True

默认情况下re.search(pattern,string)只判断string的某个子串能否由pattern匹配,为了测试整个string能否被pattern匹配,在pattern两端加上^和 $。它们并不匹配任何字符,只表示“定位到字符串的起始位置”和“定位到字符串的结束位置”。

1
2
3
4
5
6
7
#使用^和$测试string被pattern完整匹配
#只要字符串中包含数字、字符就可以匹配
re.search("[0123456789]","2") != None #=>True
re.search("[0123456789]","a2") != None #=>True
#整个字符串就是一个数字字符,才可以匹配
re.search("^[0123456789]$","2") != None #=>True
re.search("^[0123456789]$","12") != None #=>False

字符组中的字符排列顺序并不影响字符组的功能,出现重复字符也不影响,但是并不推荐在字符组中出现重复字符。

阅读全文 »
Tommy

Tommy

Be yourself.Everyone else is already taken.

6 日志
4 分类
7 标签
RSS
GitHub E-Mail
© 2019 Tommy
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Mist v6.4.2