開發(fā)者所需要知道的 iOS 11 SDK 新特性

作為 iOS 開發(fā)者粱快,整理了一下在可能需要關(guān)注的地方怕享。

新增框架

新加入 SDK 的大的框架有兩個脆诉,分別是負(fù)責(zé)簡化和集成機(jī)器學(xué)習(xí)的 Core ML 和用來創(chuàng)建增強(qiáng)現(xiàn)實(shí) (AR) 應(yīng)用的 ARKit雾棺。

Core ML

自從 AlphaGo 出現(xiàn)以來卸夕,深度學(xué)習(xí)毫無疑問成了行業(yè)熱點(diǎn)。而 Google 也在去年就轉(zhuǎn)變 Mobile-first 到 AI-first 的戰(zhàn)略砖织】钋郑可以說一線的互聯(lián)網(wǎng)企業(yè)幾乎都在押寶 AI,目前看來機(jī)器學(xué)習(xí)侧纯,特別是深度學(xué)習(xí)是最有希望的一條道路新锈。

如果你不是很熟悉機(jī)器學(xué)習(xí)的話,我想我可以在這里“僭越”地做一些簡介眶熬。你可以先把機(jī)器學(xué)習(xí)的模型看作一個黑盒函數(shù)妹笆,你給定一些輸入 (可能是一段文字,或者一張圖片)娜氏,這個函數(shù)會給出特定的輸出 (比如這段文字中的人名地名拳缠,或者圖片中出現(xiàn)的商店名牌等)。一開始這個模型可能非常粗糙贸弥,完全不能給出正確的結(jié)果窟坐,但是你可以使用大量已有的數(shù)據(jù)和正確的結(jié)果,來對模型進(jìn)行訓(xùn)練绵疲,甚至改進(jìn)哲鸳。在所使用的模型足夠優(yōu)化,以及訓(xùn)練量足夠大的情況下盔憨,這個黑盒模型將不僅對訓(xùn)練數(shù)據(jù)有較高的準(zhǔn)確率徙菠,也往往能對未知的實(shí)際輸入給出正確的返回。這樣的模型就是一個訓(xùn)練好的可以實(shí)際使用的模型郁岩。

對機(jī)器學(xué)習(xí)模型的訓(xùn)練是一項(xiàng)很重的工作婿奔,Core ML所扮演的角色更多的是將已經(jīng)訓(xùn)練好的模型轉(zhuǎn)換為 iOS 可以理解的形式缺狠,并且將新的數(shù)據(jù)“喂給”模型,獲取輸出萍摊。抽象問題和創(chuàng)建模型雖然并不難挤茄,但是對模型的改進(jìn)和訓(xùn)練可以說是值得研究一輩子的事情,這篇文章的讀者可能也不太會對此感冒记餐。好在 Apple 提供了一系列的工具用來將各類機(jī)器學(xué)習(xí)模型轉(zhuǎn)換為 Core ML 可以理解的形式驮樊。籍此,你就可以輕松地在你的 iOS app 里使用前人訓(xùn)練出的模型片酝。這在以前可能會需要你自己去尋找模型,然后寫一些 C++ 的代碼來跨平臺調(diào)用挖腰,而且難以利用 iOS 設(shè)備的 GPU 性能和 Metal (除非你自己寫一些 shader 來進(jìn)行矩陣運(yùn)算)雕沿。Core ML 將使用模型的門檻降低了很多。

Core ML 在背后驅(qū)動了 iOS 的視覺識別的Vision框架和 Foundation 中的語義分析相關(guān) API猴仑。普通開發(fā)者可以從這些高層的 API 中直接獲益审轮,比如人臉圖片或者文字識別等。這部分內(nèi)容在以前版本的 SDK 中也存在辽俗,不過在 iOS 11 SDK 中它們被集中到了新的框架中疾渣,并將一些更具體和底層的控制開放出來。比如你可以使用 Vision 中的高層接口崖飘,但是同時指定底層所使用的模型榴捡。這給 iOS 的計(jì)算機(jī)視覺帶來了新的可能。

Google 或者 Samsung 在 Android AI 上的努力朱浴,大多是在自帶的應(yīng)用中集成服務(wù)吊圾。相比起來,Apple 基于對自己生態(tài)和硬件的控制翰蠢,將更多的選擇權(quán)交給了第三方開發(fā)者项乒。

ARKit

Keynote 上的 AR 的演示可以說是唯一的亮點(diǎn)了。iOS SDK 11 中 Apple 給開發(fā)者梁沧,特別是 AR 相關(guān)的開發(fā)者帶來了一個很棒的禮物檀何,那就是 ARKit。AR 可以說并非什么新技術(shù)廷支,像是 Pokémon Go 這樣的游戲也驗(yàn)證了 AR 在游戲上的潛力频鉴。不過除了 IP 和新鮮感之外,個人認(rèn)為 Pokémon Go 并沒有資格代表 AR 技術(shù)的潛力∷峙ⅲ現(xiàn)場的演示像我們展示了一種可能砚殿,粗略看來,ARKit 利用單鏡頭和陀螺儀芝囤,在對平面的識別和虛擬物體的穩(wěn)定上做得相當(dāng)出色似炎。幾乎可以肯定辛萍,那么不做最早,只做最好的 Apple 似乎在這一刻回到了舞臺上

ARKit 極大降低了普通開發(fā)者玩 AR 的門檻羡藐,也是 Apple 現(xiàn)階段用來抗衡 VR 的選項(xiàng)贩毕。可以暢想一下更多類似 Pokémon Go 的 AR 游戲 (結(jié)合實(shí)境的虛擬寵物什么的大概是最容易想到的) 能在 ARKit 和 SceneKit 的幫助下面世仆嗦,甚至在 iPad Pro 現(xiàn)有技能上做像是 AR 電影這樣能全方位展示的多媒體可能也不再是單純的夢想辉阶。

而與之相應(yīng)的,是一套并不很復(fù)雜的 API瘩扼。涉及的 View 幾乎是作為 SceneKit 的延伸谆甜,再加上在真實(shí)世界的定為也已經(jīng)由系統(tǒng)幫助處理,開發(fā)者需要做的大抵就是將虛擬物體放在屏幕的合適位置集绰,并讓物體之間互動规辱。而利用 Core ML 來對相機(jī)內(nèi)的實(shí)際物體進(jìn)行識別和交互,可以說也讓各類特效的相機(jī)或者攝影 app 充滿了想像空間栽燕。

Xcode

編輯器和編譯器

速度就是生命罕袋,而開發(fā)者的生命都浪費(fèi)在了等待編譯上。Swift 自問世以來就備受好評碍岔,但是緩慢的編譯速度浴讯,時有時無的語法提示,無法進(jìn)行重構(gòu)等工具鏈上的欠缺成為了最重要的黑點(diǎn)蔼啦。Xcode 9 中編輯器進(jìn)行了重寫榆纽,支持了對 Swift 代碼的重構(gòu) (雖然還很基礎(chǔ)),將 VCS 提到了更重要的位置询吴,并添加了 GitHub 集成掠河,可以進(jìn)行同局域網(wǎng)的無線部署和調(diào)試。

新的編譯系統(tǒng)是使用 Swift 重寫的猛计,在進(jìn)行了一些對比以后唠摹,編譯速度確實(shí)有了不小的提升。雖然不知道是不是由于換成了 Swift 4奉瘤,不過正在做的公司項(xiàng)目的總編譯時間從原來的三分半縮短到了兩分鐘半左右勾拉,可以說相當(dāng)明顯了。

Xcode 9 中的索引系統(tǒng)也使用了新的引擎盗温,據(jù)稱在大型項(xiàng)目中搜索最高可以達(dá)到 50 倍的速度藕赞。不過可能由于筆者所參加的項(xiàng)目不夠大,這一點(diǎn)體會不太明顯卖局。項(xiàng)目里的 Swift 代碼依然面臨失色的情況斧蜕。這可能是索引系統(tǒng)和編譯系統(tǒng)沒有能很好協(xié)同造成的,畢竟還是 beta 版本的軟件砚偶,也許應(yīng)該多給 Xcode 團(tuán)隊(duì)一些時間 (雖然可能到最后也就這樣了)批销。

由于 Swift 4 編譯器也提供了 Swift 3 的兼容 (在 Build Setting 中設(shè)置 Swift 版本即可)洒闸,所以如果沒有什么意外的話,我可能會在之后的日常開發(fā)中使用 Xcode 9 beta均芽,然后在打包和發(fā)布時再切回 Xcode 8 了丘逸。畢竟每次完整編譯節(jié)省一分半鐘的時間,還是一件很誘人的事情掀宋。

這次的 beta 版本質(zhì)量出人意料地好深纲,也許是因?yàn)檫@一兩年來都是小幅革新式的改良,讓 Apple 的軟件團(tuán)隊(duì)有相對充足的時間進(jìn)行開發(fā)的結(jié)果劲妙?總之湃鹊,Xcode 9 beta 現(xiàn)在已經(jīng)能很好地工作了。

Named Color

這是個人很喜歡的一個變化×头埽現(xiàn)在你可以在 xcassets 里添加顏色涛舍,然后在代碼或者 IB 中引用這個顏色了。大概是這樣的:

像是使用 IB 來構(gòu)建 UI 的時候唆途,一個很頭疼的事情就是設(shè)計(jì)師表示我們要不換個主題色。你很可能需要到處尋找這個顏色進(jìn)行替換掸驱。但是現(xiàn)在你只需要在 xcassets 里改一下肛搬,就能反應(yīng)到 IB 中的所有地方了。

其他值得注意的變更

剩下的都是些小變化了毕贼,簡單瀏覽了下温赔,把我覺得值得一提的列舉出來,并附上參考的鏈接鬼癣。

拖拽- 很標(biāo)準(zhǔn)的一套 iOS API陶贼,不出意外地,iOS 系統(tǒng)幫助我們處理了絕大部分工作待秃,開發(fā)者幾乎只需要處理結(jié)果拜秧。UITextView 和 UITextField 原生支持拖拽,UICollectionView 和 UITableView 的拖拽有一系列專用的 delegate 來表明拖拽的發(fā)生和結(jié)束章郁。而你也可以對任意 UIView 子類定義拖拽行為枉氮。和 mac 上的拖拽不同,iOS 的拖拽充分尊重了多點(diǎn)觸控的屏幕暖庄,所以可能你需要對一次多個的拖拽行為做些特別處理聊替。

FileProvider 和 FileProviderUI- 提供一套類似 Files app 的界面,讓你可以獲取用戶設(shè)備上或者云端的文件培廓。相信會成為以后文檔相關(guān)類 app 的標(biāo)配惹悄。

不再支持 32 位 app - 雖然在 beta 1 中依然可以運(yùn)行 32 位 app,但是 Apple 明確指出了將在后續(xù)的 iOS 11 beta 中取消支持肩钠。所以如果你想讓自己的程序運(yùn)行在 iOS 11 的設(shè)備上泣港,進(jìn)行 64 位的重新編譯是必須步驟暂殖。

DeviceCheck- 每天要用廣告 ID 追蹤用戶的開發(fā)者現(xiàn)在有了更好地選擇 (當(dāng)然前提是用來做正經(jīng)事兒)。DeviceCheck 允許你通過你的服務(wù)器與 Apple 服務(wù)器通訊爷速,并為單個設(shè)備設(shè)置兩個 bit 的數(shù)據(jù)央星。簡單說,你在設(shè)備上用 DeviceCheck API 生成一個 token惫东,然后將這個 token 發(fā)給自己的服務(wù)器莉给,再由自己的服務(wù)器與 Apple 的 API 進(jìn)行通訊,來更新或者查詢該設(shè)備的值廉沮。這兩個 bit 的數(shù)據(jù)用來追蹤用戶比如是否已經(jīng)領(lǐng)取獎勵這類信息颓遏。

PDFKit- 這是一個在 macOS 上已經(jīng)長期存在的框架,但卻在 iOS 上姍姍來遲滞时。你可以使用這個框架顯示和操作 pdf 文件叁幢。

IdentityLookup- 可以自己開發(fā)一個 app extension 來攔截系統(tǒng) SMS 和 MMS 的信息。系統(tǒng)的信息 app 在接到未知的人的短信時坪稽,會詢問所有開啟的過濾擴(kuò)展曼玩,如果擴(kuò)展表示該消息應(yīng)當(dāng)被攔截,那么這則信息將不會傳遞給你窒百。擴(kuò)展有機(jī)會訪問到事先指定的 server 來進(jìn)行判斷 (所以說你可以光明正大地獲取用戶短信內(nèi)容了黍判,不過當(dāng)然考慮到隱私,這些訪問都是匿名加密的篙梢,Apple 也禁止這類擴(kuò)展在 container 里進(jìn)行寫入)顷帖。

Core NFC- 在 iPhone 7 和 iPhone 7 Plus 上提供基礎(chǔ)的近場通訊讀取功能〔持停看起來很 promising贬墩,只要你有合適的 NFC 標(biāo)簽,手機(jī)就可以進(jìn)行讀取妄呕。但是考慮到無法后臺常駐陶舞,實(shí)用性就打了折扣。不過筆者不是很熟這塊趴腋,也許能有更合適的場景也未可知吊说。

Auto Fill- 從 iCloud Keychain 中獲取密碼,然后自動填充的功能現(xiàn)在開放給第三方開發(fā)者了优炬。UITextInputTraits 的 textContentType 中添加了 username 和 password颁井,對適合的 text view 或者 text field 的 content type 進(jìn)行配置,就可以在要求輸入用戶名密碼時獲取鍵盤上方的自動填充蠢护,幫助用戶快速登錄雅宾。


文章轉(zhuǎn)載于:http://www.cocoachina.com/ios/20170607/19457.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市葵硕,隨后出現(xiàn)的幾起案子眉抬,更是在濱河造成了極大的恐慌贯吓,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜀变,死亡現(xiàn)場離奇詭異悄谐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)库北,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門爬舰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寒瓦,你說我怎么就攤上這事情屹。” “怎么了杂腰?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵垃你,是天一觀的道長。 經(jīng)常有香客問我喂很,道長惜颇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任少辣,我火速辦了婚禮官还,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毒坛。我一直安慰自己,他們只是感情好林说,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布煎殷。 她就那樣靜靜地躺著,像睡著了一般腿箩。 火紅的嫁衣襯著肌膚如雪豪直。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天珠移,我揣著相機(jī)與錄音弓乙,去河邊找鬼。 笑死钧惧,一個胖子當(dāng)著我的面吹牛暇韧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播浓瞪,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼懈玻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了乾颁?” 一聲冷哼從身側(cè)響起涂乌,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤艺栈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后湾盒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體湿右,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年罚勾,在試婚紗的時候發(fā)現(xiàn)自己被綠了毅人。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡荧库,死狀恐怖堰塌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情分衫,我是刑警寧澤场刑,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站蚪战,受9級特大地震影響牵现,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜邀桑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一瞎疼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧壁畸,春花似錦贼急、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至令杈,卻和暖如春走敌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逗噩。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工掉丽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人异雁。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓捶障,卻偏偏與公主長得像,于是被迫代替她去往敵國和親纲刀。 傳聞我的和親對象是個殘疾皇子残邀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容