编者按
2014年,整个IT领域发生了许多深刻而又复杂的变化,InfoQ策划了“解读2014”年终技术盘点系列文章,希望能够给读者清晰地梳理出技术领域在这一年的发展变化,回顾过去,继续前行。
对于 iOS 技术领域,2014 年是变化巨大的一年。在硬件上,由于苹果发布了更大尺寸的 iPhone 6 和 iPhone 6 plus,使得 iOS 设备的屏幕适配工作也多了起来。这还不包括全新的 Apple Watch 带来的开发上的变化。在软件上,Swift 语言的推出惊呆了整个业界,从 Objective-C 切换成另一个全新语言的代价是巨大的,但我们也看到了它长远的好处以及苹果对此的决心。除了软硬件外,编程语言、中国区、开发社区在 2014 年也有着巨大变化,我们试着用几个关键词来勾勒出 iOS 技术领域在 2014 年所经历的变化。
苹果在 2014 年推出了 iPhone 6 和 iPhone 6 plus,iOS 设备也进入了大屏时代!虽然包括笔者在内的许多朋友都认为:“Plus 实在太大了”,但是从销售量看, iPhone 6 plus 在初期占据了 6 成 的销售量。我本人在实际使用 iPhone 6 plus 几周后,也很快适应了它的屏幕尺寸,现在反而不习惯使用了两年的 iPhone 4s 了。在开发上,iPhone 6 的推出使得 iOS 开发者也开始像 Android 开发者那样,为适配工作担忧。与 Android 开发者不同,iOS 开发在过去多年都是用 “绝对定位” 的方式来放置各种 UI 控件,使用 Autoresizing Mask 就可以轻松搞定 iPhone4 和 iPhone5 屏幕高度的差异问题。但现在不一样了,iOS 开发者需要学习使用 AutoLayout,通过各种 Constraint 来调整 UI 控件,但是很多界面是需要用代码来编写的,所以这方面的开发工作会比较辛苦,好在有 Masonry 这一类的开源库来辅助我们做界面开发工作。
iPhone 6 plus 引入的特有的 3x 的图片问题使 UI 设计师的工作量也大大的增加了。另外,以前由于 Android 设备其实太过于分裂,无法对每种屏幕分辨率都做到精致地设计,所以设计师大多只是用 “凑合用” 的思想来实施 Android 应用的适配。这一点从 Android 大屏手机上的应用呈现就能看出来。而现在同样的方式不太可能被严格的苹果以及挑剔的 iPhone 用户所接受,设计师很可能需要为 iPhone 6 plus 做专门的大屏设计,才能获得用户的芳心。
Apple Watch 的推出让适配工作真正地进入了 Hard 模式。优秀的开发者需要在工程中做好代码地复用,才能让底层的逻辑能够同样运行在 Apple Watch 中。不过这方面的工作还只是猜想,我们得等到 Apple Watch 真正面世的时候,才能真正了解到相关的开发工作有多么不同。
苹果在 2014 年的全球开发者大会(World Wide Developer Conference,简称 WWDC)上并没有发布任何新的硬件产品,但展示出其在软件上的各种功能改进和整合上的巨大努力。苹果推出了新的 OS X 10.10 操作系统 Yosemite,它吸收了从 iOS 7 开始的扁平化的设计风格,很多改进的细节都可以看到 iOS 系统对于 OS X 的影响。Yosemite 最吸引我的是 handoff 功能。handoff 功能将 Mac 电脑和 iPhone、iPad 的功能进行了深度整合,当你拥有这三个设备时,它们每一个都可以接打电话和收发短信,你在它们任何一个设备上编辑的文档,也可以实时同步到另一个设备上。handoff 并不是苹果的应用独有的功能,苹果将其相关的 API 都开放给了开发者,所以开发者也可以完全开发出支持 handoff 功能的应用。
相对于 Yosemite 带来的整合方面的改进,新版 iOS 8 的改进的重点则是开放。苹果开放了输入法接口,允许第三方提供输入法。苹果也开放了 Touch ID,允许第三方应用获得指纹信息。HomeKit 则为智能硬件开放了不少可以互操作的接口。另外,iOS 8 还新增了 4000 个新的 API,开放了大量底层 API 接口供应用调用。所以对于普通用户而言,iOS 8 新增的可见功能可能是有限的,但是其开放的大量 API 和新 SDK 释放出了巨大的想象空间,相信会产生更多有趣的应用。
对于一个硬件来说,相关的软件是非常重要的,但是苹果却将它的操作系统和 iWork 办公套件完全免费,这显示出苹果对于软件生态圈不同的理解。而微软至今最大的两大收入还是来自它的 Office 和 Windows 系列操作系统。在微软还在发愁他的新版 Wiindows 10 怎么卖出去时,苹果早已不玩这种 1.0 的商业模式游戏了。
苹果的 Objective-C 语言发明于与 C++ 同时期的上世纪 80 年代初,虽然苹果对其进行了很多次改进,但这终究像给应用打补丁一样,不是特别舒服。这次 Swift 的推出,苹果试图用全新的编程语言来提高 OS X 和 iOS 程序员的开发效率。单从语言特性上来看,Swift 吸收了众多现代编程语言的优秀特性,例如类型推断(Type inference)、范型(Generic)、闭包(Closure)、命名空间(namespace),元组(tuple)等,整体语法上也更加简洁。我们也了解到 Swift 是苹果从 4 年前就开始筹划中的事情,可见苹果在长远规划上对于 Swift 语言的重视,相信未来 Swift 会接替更多 Objective-C 原本的地位,所有 iOS 开发者都应该花时间学习这门全新的语言。
苹果这次推出 Swift 也吸引了大量的讨论,其中比较不正确的观点是认为 iOS 开发的门槛因此而降低了。从我和身边的同行对 Swift 的学习和讨论来看,Swift 并不是一门可以简单上手的语言。并且在未来一到两年内,iOS 开发必然会经历同时使用 Objective-C 和 Swift 的过渡阶段。对于 iOS 开发者,除了必须掌握以前的 Objective-C 语言的知识,还需要学习并不简单的 Swift,可见 iOS 开发的门槛不但没有降低,反而提高了不少。
苹果是重视中国的,它在大中华区的销售贡献了约 15% 的全球营收。但是从某些方面看,苹果还是不够重视中国的。很多中国用户抱怨的问题,苹果都一直没有解决。我们来看看苹果对于中国区的用户和开发者,还有哪些需要改进的地方。
刚刚提到的 handoff 功能依赖于苹果的 iCloud,但是苹果的 iCloud 存取速度在中国却是非常糟糕的。笔者试图打开一个通过 iCloud 共享的约为 6M 的视频,但是等了 3 分钟才打开。与此同时,国内的各种网盘服务却能提供非常大的免费容量以及非常快的访问速度。
中国的垃圾短信和骚扰电话一直是非常严重的,而 iMessage 免费发送的特点给了垃圾短信发送提供了很好的平台。苹果到现在都没有推出相关的有效避免垃圾短信的办法,只提供了一个用于反馈垃圾短信的邮箱,整个反馈流程也非常繁琐,需要提供发送者邮件、内容以及相关截图。笔者反馈了数十次之后,也没有得到过任何回应。对于骚扰电话,苹果只提供了事后将该电话号码加入黑名单的功能,这使得用户只能是接了骚扰电话后,才能做相应的手工处理。这些问题从技术上要解决没有任何难度,看看 Android 平台就可以看到这方面的问题被非常完美地解决了。但是苹果却不愿意做相关的努力,这只能说明它还不够重视中国用户。
苹果的 App Store 中国区也是比较混乱的,各种刷榜的应用充斥着排行榜的前几名。苹果在这方面应该是做了很多努力的,但是终究还是做得不够。从很多应用的评论中,我们都能看出刷榜的痕迹。由于这方面直接和收入相关,所以我相信苹果还是会尽力改进的。App Store 还有一个问题是支付不太方便,今年苹果和银联合作,不但推出 1 元的应用,而且允许用户使用银联卡来付费,极大地方便了用户购买应用。
国外的 iOS 开发社区今年依然发展红火,比较引人注目的是 objc.io 。 objc.io 每一期的质量都非常高,所以由知名开发者王巍(onevcat)组织的翻译团队会将每一期文章都翻译成中文。国内的博客和社区发展相比国外还是比较慢,参与分享 iOS 技术的独立博客相比以往多了很多,但整体质量还有待提高。
移动开发也实实在在地成为了一个重要的技术领域,QCon 和 ArchSummit 每一届都会有专门的移动专题,可见这方面聚焦了开发者大量的关注。
2014 年国内外都涌现出了大量服务于移动开发者的第三方服务。这些第三方服务作为生态圈的一个重要组成部分,将会方便开发者聚焦核心功能,而不用担心基础设施的搭建。
展望 2015 年,笔者认为: