「春風又綠加州岸,物是人非又一年」。WWDC 2017 keynote落下帷幕,新的iOS開發旅程也由此開啟了。在iOS 11界面的重大改革背後,到底Apple又帶來了什麼新的驚喜給我們這些「果粉」呢?
要用一句話來評價今年 Keynote 所展現出來的內容的話,就是小步革新。大的技術方面可以說只有 ARKit 可堪研究,但是我們還是看到了類似跨 app 拖拽,新的 Files 應用進一步突破 iOS 原有桎梏的更新。iOS 11,特別是配合新的硬件,相信會給用戶帶來不錯的體驗。
作為ios的開發技術人員,需要注意SDK的哪些特性呢?
新增SDK框架之Core ML
自從「阿法狗」出現以來,深度學習無疑成了技術開發行業的焦點。而Google也在去年就轉變Mobile-first 到 AI-first 的戰略。可以說一線互聯網企業幾乎都在押寶AI,目前機器學習尤其是深度學習,是最具有希望的一條路。
而Core ML所扮演的角色更多是將已經訓練好的模型轉化為ios可以理解的形式,并將新的數據「飼養」模型從而獲取輸出。在以前,可能需要自己尋找模型再寫一些C++的代碼來跨平台調用,而且難以利用ios設備的GPU性能和Metal。Core ML 的誕生将使用模型的门槛降低了很多。
Core ML在背後驅動了iOS視覺識別的Vision框架和Foundation中的語義分析相關API。普通開發者可以從API中直接獲益,而且這部分內容在以前的版本的SDK中也存在;只是iOS 11 SDK中,它們會被集中到新的框架中,并將一些更具體和底層的控制開放出來。這給iOS的計算機視覺帶來了新的可能。
新增SDK框架之ARKit
iOS SDK 11中Apple給開發者,尤其是AR相關的開發者帶來了一個很棒的禮物,那就是ARKit。ARKit利用單鏡頭和陀螺儀,在對平面的識別和虛擬物體的穩定上做得相當出色。
ARKit極大降低了普通開發者玩AR的門檻,也是Apple現階段用來抗衡VR的選項。而與之相應的,是一套并不很複雜的API。涉及的 View 幾乎是作爲 SceneKit 的延伸,再加上在真實世界的定爲也已經由系統幫助處理,開發者需要做的大抵就是將虛擬物體放在屏幕的合適位置,並讓物體之間互動。而利用 Core ML 來對相機內的實際物體進行識別和交互,可以說也讓各類特效的相機或者攝影 app 充滿了想像空間。
編輯器和編譯器
Swift 自問世以來就備受好評,但是緩慢的編譯速度,時有時無的語法提示,無法進行重構等工具鏈上的欠缺成爲了最重要的黑點。Xcode 9 中編輯器進行了重寫,支持了對 Swift 代碼的重構,將 VCS 提到了更重要的位置,並添加了 GitHub 集成,可以進行同局域網的無線部署和調試。另外,Xcode 9 中的索引系统也使用了新的引擎,据称在大型项目中搜索最高可以达到 50 倍的速度。
Named Color
這是一個極具個性化的變化。現在你可以在 xcassets 裏添加顔色,然後在代碼或者 IB 中引用這個顔色了。大概是這樣的:
像是使用 IB 來構建 UI 的時候,一個很頭疼的事情就是設計師表示我們要不換個主題色。你很可能需要到處尋找這個顔色進行替換。但是現在你只需要在 xcassets 裏改一下,就能反應到 IB 中的所有地方了。
其他值得注意的變更
拖拽 – 很標准的一套 iOS API,不出意外地,iOS 系統幫助我們處理了絕大部分工作,開發者幾乎只需要處理結果。
FileProvider 和 FileProviderUI – 提供一套類似 Files app 的界面,讓你可以獲取用戶設備上或者雲端的文件,相信會成爲以後文檔相關類 app 的標配。
DeviceCheck – DeviceCheck 允許你通過你的服務器與 Apple 服務器通訊,並爲單個設備設置兩個 bit 的數據。
PDFKit – 這是一個在 macOS 上已經長期存在的框架,但卻在 iOS 上姗姗來遲。你可以使用這個框架顯示和操作 pdf 文件。
IdentityLookup – 可以自己開發一個 app extension 來攔截系統 SMS 和 MMS 的信息。
Core NFC – 在 iPhone 7 和 iPhone 7 Plus 上提供基礎的近場通訊讀取功能。
Auto Fill – 從 iCloud Keychain 中獲取密碼,然後自動填充的功能現在開放給第三方開發者了。