我的2014技术流水帐

发表于:, 更新于:, By Rm1210
大纲
  1. 1. 1.Auto Layout
  2. 2. 2.ARC
  3. 3. 3.Git / Github
  4. 4. 4.FRP / ReactiveCocoa / MVVM
  5. 5. 5.Swift
  6. 6. 6.其他

2014,没有接触到什么高深的技术,不过也尝试了很多新东西,有一些浅尝辄止,有一些有在项目中大量运用,拣几个大的点以一篇流水账记录一下。

1.Auto Layout

从 OS X 10.7/iOS6 开始提供 AutoLayout 技术—一种通过Constraint(约束)来声明布局的机制,目的是对不同的(当前存在的和未来更多的)屏幕分辨率以及对移动设备旋转有更好兼容。在1.x版本的静态布局中,每个 View 的座标和尺寸都是清楚地由一些数字决定(导致很多 magic number),导致动态添加 View 时需要不断写一些计算座标和尺寸的代码,非常繁琐;AutoLayout 则完全改变静态布局的思维,不再需要写绝对座标和尺寸,需要考虑的是相对 superView/brotherView 的距离或者尺寸比例,当你动态添加更多的 View 或者有关联的 View 发生改变时,你不再需要重新进行布局,解放不同窗体尺寸,不同分辨率越来越大的布局工作量。在项目2.0版本中,采用了基于 AutoLayout 的 Masonry 库来更新 1.x 版本的传统布局模式,为产品添加了全面的自适应支持。其中,Masonry 中创新的描述语法及优雅的链式语法可读性高,简单明了,也十分有借鉴意义。

2.ARC

ARC 为 Automatic Reference Counting 缩写,即自动引用计数,是新的LLVM 3.0编译器的一项特性。虽然距离释出 ARC 的 WWDC2011 已经3年多了,但身边很多开发者并没有转向 ARC,究其原因,多数开发者都是担心内存不受自己管理会出现问题。然而越来越多的开发者采用 ARC 并取得了效果良好,越来越多的开源代码转向 ARC,越来越多 ARC 相关的教程及原理解析的文章,说明 ARC 已经通过的业界的考验,是一套有效简化内存管理的机制,甚至还能提高程序的效率。在项目2.0版本中,95%以上的代码从 MRC 迁移到 ARC,一举解决了之后开发工作手动管理内存的麻烦。

3.Git / Github

  • 学习 Git 的初衷是为了更好地使用 github,为了能参与到一些感兴趣的开源项目中。对 Git 有一定了解后,为了使用一些 Git 特有的特性,我便在工作中从 svn 迁移到了 Git;不过当时公司的代码管理服务器采用的仍然是 svn,这段时间使用了 git-svn 双向桥接工具,从而在本地享受到 Git 所有的功能,同时可以向 svn 服务器推送。此后公司搭建了 Git 服务器,全员迁移到 Git,需要规范开发工作流,在学习了 Git-Flow 及 GitHub-Flow 后,为项目组引入了 Git-Flow。

  • 期间开始对 github 的使用慢慢熟悉,参与了一些开源项目;比如 objc中国的翻译项目中的文章《从 UIKit 到 AppKit》 的翻译;以及本博客也是使用 GitHub Pages 托管在 Github 上的。

4.FRP / ReactiveCocoa / MVVM

  • Functional Reactive Programming(简称FRP)是一种响应变化的编程范式,ReactiveCocoa是在 Objective-C 对 FRP 的实现,具有具有函数式编程和响应式编程以及 FRP 的特性。ReactiveCocoa 基于 .NET 的Reactive Extensions,为 OC 带来了颠覆式的编程思想及体验,更加被 Mattt Thompson 大神称为开启一个新 Objective-C 纪元。ReactiveCocoa 统一了 Objective-C 中各种消息传递方式,包括 KVO、通知、delegate、block 以及 target-action 方式;由于对 ReactiveCocoa 理解得不够深入,在项目中只有小规模使用这种全新的编程范式:主要用在消息的传递和 UI 控件状态的监控响应。

  • 使用 ReactiveCocoa 会很自然而然地接触到和使用 MVVM 这种由 MVC 演变来的设计模式。关于 MVVM 请参考 MVVM 介绍 这篇文章,由于历史遗留问题及代码设计的原因,项目中并没有运用这种设计模式,对该模式有足够理解后一定要在真是环境中实践一下。

5.Swift

Swift 是苹果新推出的编程语言,用于编写 iOS 和 OS X 应用。Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制,官方的说法是它的降临将重新定义软件开发。Swift 释出之后,一直有断断续续地学习,确实会给开发带来诸多便利及代码量的大大减少;项目中的新功能使用 Swift 来实现应该问题不大,不过产品需要兼容低版本的系统,不便于调试,所以没有用 Swift 和 Objective-C 混编来开发新特性。

6.其他

近年来,由于 iOS 的成功,一些源于 iOS 的技术逐渐反哺到 Mac 上面来,Mac 上面的一些技术开始出现分化,既要兼容传统的机制又要兼容新的 iOS 的实现机制来保持各平台体验尽量一致;连 View 的类型都分为 Layer-Hosting ViewLayer-Backed View 两种,可见 Mac 上 UI 技术的繁杂,从《从 UIKit 到 AppKit》中提到的两个平台的差异也可见一斑;这部分内容在此就不详述了。