我们知道在 swift 中,闭包(closure)是一等公民,因此可以被当作参数传递,在学习 swift 的过程中经常会看到某些关键字修饰该闭包,@autoclosure, @escape 就是其中比较常见的两种关键字。
@autoclosure && @escape
关于 iOS10 Notification 的那些事儿
概览
推送通知我们大家都不陌生,可以说几乎每个使用智能手机的人每天都会被不同的通知 打扰 到,正式因为合适的推送是吸引用户注意力的利器,其成为了各 App 吸引用户,将用户带回到 App 本身,提升用户的活跃度的一种必要的方式。
阅读《垃圾回收的算法与实现》
前一阵子 《垃圾回收的算法与实现》 这本书比较火,正好本人也对垃圾回收这个概念挺感兴趣的,就耐着性子一点一点啃,到今天只能说磕磕绊绊的看了大部分,实现篇只看了 Python 的部分,剩余的关于 Dalvik VM、Rubinius 以及 V8 的垃圾回收并未多看,主要还是自己对 Javascript,Ruby 等语言未有深入学习,我深以为只有结合这种语言本身的语言特性来看对应的垃圾回收实现才有意义。这篇文章主要是总结下学习到的一些主要的知识点。
如何使用UIBezierPath实现一个弹性视图动画
原文:Elastic view animation, or how I built DGElasticPullToRefresh 原作者 @gontovnik
DGElasticPullToRefresh 展示了如何实现一个弹性效果。效果如下图所示:

开发环境: Xcode 7 Swift 2.0
要求: 开发者至少对 UIBezierPath 和 UIGestureRecognizer 有一定的了解.
理解业务逻辑
你可能从上面的效果图上可以看到一些端倪,这个动画中我们主要使用到了UIBezierPath来实现上面这种效果。 我们首先创建一个贝塞尔曲线路径的CAShapeLayer,然后当你的手指在屏幕上移动的时候我们将移动所有的控制点来呈现动画。每一个控制点会使用一个可见的UIView来表示。下面有几张图来演示它们是如何工作的,我将所有的控制点标识成了红色:
Objective-C中Category的一点东西
Objective-C中的分类(category)是一种编译时的手段,其允许我们通过给某个已知类添加方法来扩充该类的一种方式。当然这其中是有限制的,就是不能给已知类添加新的实例变量。