WWDC总结:开发者须要知道的iOS 9 SDK新特性

http://blog.csdn.net/uxyheaven/article/details/46470801算法

编者按:WWDC 2015苹果开发者大会是移动开发者一年一度的盛会,InfoQ中文站除了第一时间整理Keynote内容分享给你们以外,还邀请了资深的一线开发者分享他们的收获。本文为王巍(@onevcat)对WWDC上透露的iOS 9 SDK新特性的总结,分享给广大的iOS开发者。后端

年年岁岁花类似,岁岁年年人不一样。今年的 WWDC 一如既往的热闹,得益于 Apple 的随机抽选机制,这两年有更多的中国开发者有机会亲临现场进行体验,并与全球开发者取得更多的交流。更多的开发者可能只能在家里或者公司远程关注这一全球 Apple 开发者的盛会,可是这也并无减小你们对于开发的热情。安全

生命不息,学习不止。从 WWDC 开始受到广大开发者的关注以来,这就是一个开发者们学习和提升的重要途径。能够感觉到近年来国内开发者的平均水平愈来愈高,但愿这样的趋势可以保持下去,毕竟只有在社区的支持下,开发者们才会是最强力的存在。架构

事不宜迟,让咱们来看看今年的 WWDC 中开发者可能须要重点关注的一些内容吧。app

总览框架

iOS 9 时代开发者面临的最大的挑战和最急切的任务可能有两个方面,首先是如何利用和适配全新的 iPad 分屏多任务特性,其次是如何面对和利用 watchOS 2 来构建原生的手表 app。另外的新课题基本就都是现有框架的衍生和扩展,包括从单元测试扩展到 UI 测试,如何进一步占领和使用系统的通知中心及搜索页面,以及 Swift 2 的使用等。异步

能够说,通过了 iOS 7 和 iOS 8 连续两次重量级的变革和更新,对普通的 app 开发者来讲,iOS 9 SDK 略归于缓和及平静,新的 SDK 在 API 和总体设计上并无发生像以前两个系统那样翻天覆地的改变。开发者们也正能够利用这个机会稍做喘息,在这一年里尽快熟悉和至少过渡到使用 iOS 8 SDK 的特性来构筑本身的 app (好比尝试使用 Size Class 和 Presentation Controller 等)。尽可能提高本身的职业能力和制做 app 的水平,并保证能跟上滚滚向前的 Apple 车轮,应该是今年 Cocoa 开发者们的主要任务。从近几年的 WWDC 技术路线图来看,Apple 开发可谓是环环相扣,若是哪一年你的技术停步不前,以后想要再遇上可能要付出的就是成倍的精力了。ide

Multitasking工具

这能够说是 iOS 9 最大的卖点了。多任务特性,特别是分屏多任务使得 iPad 真正变得像一个堪当重任的我的电脑。虽然在很早之前就已经有越狱插件能让 iPad 同时运行多个程序,可是 Apple 仍是很谨慎地到 2015 年才在本身性能最为强劲的移动设备上实装这个功能。iOS 9 中的多任务分为三种表现形式,分别是临时调出的滑动覆盖 (Slide Over),视频播放的画中画模式 (Picture in Picture) 以及真正的同时使用两个 app 的分割视图 (Split View)。如今能运行 iOS 9 的设备中只有最新的 iPad Air 2 支持分割视图方式,可是相信随着设备的更新,分割视图的使用方式极可能成为人们平常使用 iPad 的一种主流方式,所以提前进行准备是开发者们的必修功课。布局

虽然第一眼看上去感受要支持多任务的视图会是一件很是复杂的事情,可是实际上若是你在前一年就紧跟 Apple 步伐的话,就很简单了。滑动覆盖和分割视图的 app 会使用 iOS 8 引入的 Size Class 中的 Compact Width 和 Regular Height 的设定,配合上 AutoLayout 来进行布局。也就是说,若是你的 app 以前就是 iPhone 和 iPad 通用的,而且已经使用了 Size Class 进行布局的话,基本上你不须要再额外作什么事儿就已经能支持 iOS 9 的多任务视图了。可是若是不幸你尚未使用这些技术的话,可能你会须要尽快迁移到这套布局方式中,才能完美支持了。

视频 app 的画中画模式相对简单一些,若是你使用 AVPlayerViewController 或者 AVPlayerLayer 来播放视频的话,那什么都不用作就已经支持了。但若是你以前选择的方案是 MPMoviePlayerController 或者 MPMoviePlayerViewController 的话,你可能也须要今早迁移到 AVKit 的框架下来,由于 Media Player 将在 iOS 9 被标记为 deprecated 并再也不继续维护。

watchOS 2

在新的 watchOS 2 中,Watch App 的架构发生了巨大改变。新系统中 Watch App 的 extension 将不像如今这样存在于 iPhone 中,而是会直接安装到手表里去,Apple Watch 从一个单纯的界面显示器进化为了可执行开发者代码的设备。得益于此,开发者们也能够在 extension 中访问到像数字表冠和 (虽然都只是很初级的访问,可是聊胜于无) 心跳计数这样的情报。虽然有所进步,可是其实 Apple 在 watchOS 2 里表现出来的态度仍是十分谨慎,这可能和初代 Apple Watch 的设备限制有很大关系,因此实际上留给 app 开发者的电量和性能空间并非十分广阔。可是相比起如今的 WatchKit 来讲,能够脱离 iPhone 运行自己就是了不得的进步了。而为了和 iPhone 进行通信,如今还添加了 WatchConnectivity 这个新框架。咱们有足够的理由期待 Apple Watch 和 WatchKit 在接下来两三年里的表现。

UI Test

在开发领域里,测试一直是保障产品质量关键。从 Xcode 4 以来,测试在 app 开发中的地位可谓是逐年上升。从 XCT 框架的引入,到测试 target 成为新建项目时的默认,再到去年加入的异步代码测试和性能测试。能够说如今 Xcode 自带的测试框架已经能知足绝大部分单元测试的需求了。

可是这并不够。开发一个 iOS app 历来都是更注重 UI 和用户体验的工做,而简单地单元测试能够很容易地保证 model 层的正确,却很难在 UI 方面有所做为。如何为一个 app 编写 UI 测试一直是 Cocoa 社区的难题之一。以前的话有像是 KIF,Automating,甚至是 FBSnapshotTestCase 这种脑洞大开的方案。今年 Apple 给出了一个更加诱人的选项,那就是 Xcode 自带的 XCUITest 的一系列工具。

和大部分已有的 UI 测试工具相似,XCUI 使用 Accessibility 标记来肯定 view,但由于是 Apple 自家的东西,它能够自动记录你的操做流程,因此你只须要书写最后的验证部分就能够了,比其余的 UI 测试工具方便不少。

Swift 2

Swift 通过了一年的改善和进步,如今已经能够很好地担任 app 开发的工做了。笔者本身也已经使用 Swift 做为平常工做的主要语言有半年多时间了,这半年里的整体感受是越写越舒畅。Swift 2 里主要的改动是错误处理方面的变化,Apple 从 Cocoa 传统的基于 NSError 错误处理方式变为了 throw catch 的异常处理机制。这个转变确实可让程序更加安全,新增的 ErrorType 也很好地将错误描述进行了统一。可是在实际接触了一两天以后,在语法上感受要比原来的处理写的代码多一些。多是长久以来使用 NSError 的习惯致使吧,笔者还并无能很好地全面接受 Swift 2 中的异常机制。不过此次 Apple 作的相对激进,把 Cocoa API 中的 error 全数替换成了 throw。因此无论情不情愿,转型到异常处理是 Swift 开发者必须面对的了。

另外 Apple 新加了一些像是 guard 和 defer 这样的控制流关键字,这在其余一些语言里也是很实用的特性,这让 Swift 的书写更加简化,阅读起来更流畅。为了解决在运行时的不一样 SDK 的可用性的问题,Apple 还在 Swift 2 里加入了 avaliable 块,之前咱们须要本身去记忆 API 的可用性,并经过检查系统版本并进行对比来作这件事情。如今有了 avaliable 检测,编译器将会检查出那些可能出现版本不匹配的 API 调用,app 开发的安全性获得了进一步的保障。为了让整个 SDK 更适合 Swift 的语法习惯,Apple 终于在 Objective-C 中引入了泛型。这看似是 Objective-C 的增强,可是实际上却实实在在地是为 Swift 一统 Apple 开发开路。有了 Objective-C 泛型之后,用 Swift 访问 Cocoa API 基本不会再获得 AnyObject 类型了,这使得 Swift 的安全特性又上了一层台阶。

最后是 Swift 2 开源的消息。Swift 的编译器和标准库将在今年年末开源,对于通常的 app 开发者来讲可能并不会带来什么巨变,但这确实意味着 Swift 将从一门 app 制做的专用语言转型为一门通用语言。最容易想到的就是基于 Swift 的后端开发,也许咱们会在看到 Javascript 一统天下以前就能先感觉一下 Swift 全栈的力量?

App Thinning

笔者在日本工做,由于这边你们流量都是包月且溢出的,因此基本不会有人对 app 的尺寸介意,无非就是下载 5 秒仍是 10 秒的区别。可是在和国内同行交流的时候,发现国内 app 开发对尺寸的要求近乎苛刻。由于 iOS app 为了后向兼容,如今都同时包含了 32 bit 和 64 bit 两个 slice。另外在图片资源方面,更是 1x 2x 3x 的图像包罗万象 (好吧如今 1x 应该不太须要了)。而用户使用 app 时,由于设备是特定的,其实只须要其中的一套资源。可是如今在购买和下载的时候倒是把整个 app 包都下载了。

Apple 终于意识到了这件事情有多傻,iOS 9 中终于能够仅选择须要的内容 (Slicing) 下载了。这对用户来讲是很大的利好,由于只须要升级到 iOS 9,就能够节省不少流量。对于开发者来讲,并无太多要作的事情,只须要使用 asset catalog 来管理素材标记 2x 3x 就能够了。

给 App 瘦身的另外一个手段是提交 Bitcode 给 Apple,而不是最终的二进制。Bitcode 是 LLVM 的中间码,在编译器更新时,Apple 能够用你以前提交的 Bitcode 进行优化,这样你就没必要在编译器更新后再次提交你的 app,也能享受到编译器改进所带来的好处。Bitcode 支持在新项目中是默认开启的,没有特别理由的话,你也不须要将它特地关掉。

最后就是按需加载的资源。这可能在游戏中应用场景会多一些。你能够用 tag 来组织像图像或者声音这样的资源,好比把它们标记为 level1,level2 这样。而后一开始只须要下载 level1 的内容,在玩的过程当中再去下载 level2。或者也能够经过这个来推后下载那些须要内购才能得到的资源文件。在一些大型游戏里这是很常见的优化方法,如今在 iOS 9 里也能够方便地使用了。

人工智能和搜索 API

若是说这届 WWDC Keynote 上还有什么留给我印象深入的内容的话,我会给更加智能的手机助理投上一票。虽然看起来还很初级,好比就是插入耳机时播放你喜欢的音乐,推荐你可能会联系的 人和打开的 app 等,可是这确实是颇有意义的一步。如今的 Siri 只是一个问答系统,若是上下文中断,“她”甚至不记得前面两句话说了些什么。一个不会记住 Boss 习惯的秘书必定不是一个好护士,而 Apple 正在让 iPhone 向这方面努力。好消息是咱们大概暂时还不用担忧会碰到故意不经过图灵测试的机器,因此在人工智能上还有很大的空间能够发挥。

而搜索 API 实质上让 app 多了一个可能的入口。有些用户会很是频繁地使用搜索界面,这是一个绝好的展现你的 app 和提升打开率的机会。若是 app 类型合适的话,这是很是值得一作的追加特性。

游戏相关

游戏类的 app 由于在不一样的移动平台上的用户体验并无鸿沟似的差别,因此是最容易跨平台的 - 毕竟如今不管哪一个开发商都没法忽视安卓的份额。这也是 Apple 自家的 SpriteKit 和 SceneKit 这样的游戏框架一直不温不火的缘由。比起被局限在 Apple 平台,更多的开发商选择像是 Unity 或者 Cocos2d-x 这样的跨平台方案。可是今年 Apple 仍是持续增强了游戏方面的开发工具支持,包括负责状态机维护和寻路等的 GameplayKit 框架,负责录像和回放游戏过程的 ReplayKit 框架,以及物理建模的 Model I/O 框架。

这些其实都是在 Apple 的游戏开发体系中补充了一些游戏业界已经很成熟的算法和工具,为开发者节省了很多时间。对于我的开发者自制的游戏来讲,Apple 的工具提供了相对低的门槛,易于上手。可是在如今大部分游戏开发都须要跨平台的年代,总感受 Apple 体系是否能顺利走下去还须要进一步观察。

其它

HomeKit,CloudKit,HealthKit 等等杂七杂八的框架。若是是 iOS Only 的 app 的话,使用 CloudKit 作 BaaS 也许是不错的选择,可是也要面临从此跨平台数据难以共享的风险。其余几个框架专业性相对较强,大部分须要配合硬件支援,其实一直说智能硬件是下一个爆点, 可是至少如今为止还没能爆出大的声响,更多的却已经进入到廉价竞争 (手环什么的你懂的),只能说期待这些设备的后续表现吧。

最后是一个对于刚入门或者打算投身到 Apple 开发中的朋友的福利。如今你能够不须要加入付费的开发者计划就能将 app 部署到本身的设备上了,而在之前这至少须要你加入 99 美金每一年的开发者计划,这能够说进一步下降了进行 Apple 开发的门槛。

总结

正如上面提到的,对开发者来讲,今年的 WWDC 并无像 13 年和 14 年那样颠覆性的变化,大可能是对已有特性的增强补充和对开发工具链的加强。今年能够说是一个 Cocoa 开发者们沉淀以前知识,增进本身技能的好机会。如今 WWDC 15 还在如火如荼的进行之中。若是你打算尽早拥抱新 SDK 的变化的话,请不要犹豫,直接访问 Apple 的开发者网站,去寻找和观看本身感兴趣的话题吧。

相关文章
相关标签/搜索