偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

開(kāi)發(fā)者需要知道的iOS9 SDK新特性

移動(dòng)開(kāi)發(fā)
生命不息,學(xué)習(xí)不止。一如以往幾年,我會(huì)陸續(xù)寫(xiě)一些關(guān)于 WWDC 和新的 SDK 里我覺(jué)得有意思和我自己重點(diǎn)關(guān)注和學(xué)習(xí)的內(nèi)容?,F(xiàn)在回頭看前幾年寫(xiě)的東西,愈來(lái)愈感覺(jué)到以前青蔥歲月的自己真是傻得可愛(ài)。不過(guò)一路以來(lái)的成長(zhǎng)軌跡倒是很明顯,也希望自己能就這樣淡然地將這段旅程繼續(xù)下去。

[[146244]]

 

年年歲歲花相似,歲歲年年人不同。今年的 WWDC 一如既往的熱鬧,但是因?yàn)橐疹櫦依飫偝錾膶殞氁约皩殞毜哪铮椭荒茉诩依锏?ldquo;窩里蹲”家庭影院來(lái)關(guān)注這一全球 Apple 開(kāi)發(fā)者的盛會(huì)了。

生命不息,學(xué)習(xí)不止。一如以往幾年,我會(huì)陸續(xù)寫(xiě)一些關(guān)于 WWDC 和新的 SDK 里我覺(jué)得有意思和我自己重點(diǎn)關(guān)注和學(xué)習(xí)的內(nèi)容?,F(xiàn)在回頭看前幾年寫(xiě)的東西,愈來(lái)愈感覺(jué)到以前青蔥歲月的自己真是傻得可愛(ài)。不過(guò)一路以來(lái)的成長(zhǎng)軌跡倒是很明顯,也希望自己能就這樣淡然地將這段旅程繼續(xù)下去。

矯情結(jié)束,該干活了。讓我們來(lái)看看今年的 WWDC 中我認(rèn)為的開(kāi)發(fā)者需要關(guān)注的一些內(nèi)容吧。

總覽

iOS 9 時(shí)代開(kāi)發(fā)者面臨的最大的挑戰(zhàn)和最急切的任務(wù)可能有兩個(gè)方面,首先是如何利用和適配 iPad 的新的分屏多任務(wù)特性,其次是如何面對(duì)和利用 watchOS 2 來(lái)構(gòu)建原生的手表 app。另外的新課題基本就都是現(xiàn)有框架的衍生和擴(kuò)展,包括從單元測(cè)試擴(kuò)展到 UI 測(cè)試,如何進(jìn)一步占領(lǐng)和使用系統(tǒng)的通知中心及搜索頁(yè)面,以及 Swift 2 的使用等。

可以說(shuō),經(jīng)過(guò)了 iOS 7 和 iOS 8 連續(xù)兩次重量級(jí)的變革和更新,對(duì)普通的 app 開(kāi)發(fā)者來(lái)說(shuō),iOS 9 SDK 略歸于緩和和平靜,新的 SDK 在 API 和整體設(shè)計(jì)上并沒(méi)有發(fā)生什么非常巨大的改變。開(kāi)發(fā)者們也正可以利用這個(gè)機(jī)會(huì)喘息一下,盡快進(jìn)一步熟悉和至少過(guò)渡到使用 iOS 8 SDK 的內(nèi)容來(lái)構(gòu)筑自己的 app (比如嘗試使用 Size Class 和 Presentation Controller 等),盡快提升自己的職業(yè)技能和制作的 app 的水平,并保證能跟上滾滾向前的 Apple 車(chē)輪,應(yīng)該是今年 Cocoa 開(kāi)發(fā)者們的主要任務(wù)。

Multitasking

這可以說(shuō)是 iOS 9 最大的賣(mài)點(diǎn)了。多任務(wù)特性,特別是分屏多任務(wù)使得 iPad 真正變得像一個(gè)堪當(dāng)重任的個(gè)人電腦。雖然在很早以前就已經(jīng)有越獄插件能讓 iPad 同時(shí)運(yùn)行多個(gè)程序,但是 Apple 還是很謹(jǐn)慎地到 2015 年才在自己性能最為強(qiáng)勁的移動(dòng)設(shè)備上實(shí)裝這個(gè)功能。iOS 9 中的多任務(wù)分為三種表現(xiàn)形式,分別是臨時(shí)調(diào)出的滑動(dòng)覆蓋 (Slide Over),視頻播放的畫(huà)中畫(huà)模式 (Picture in Picture) 以及真正的同時(shí)使用兩個(gè) app 的分割視圖 (Split View)?,F(xiàn)在能運(yùn)行 iOS 9 的設(shè)備中只有最新的 iPad Air 2 支持分割視圖方式,但是相信隨著設(shè)備的更新,分割視圖的使用方式很可能成為人們?nèi)粘J褂?iPad 的一種主流方式,因此提早進(jìn)行準(zhǔn)備是開(kāi)發(fā)者們的必修功課。

雖然第一眼看上去感覺(jué)要支持多任務(wù)的視圖會(huì)是一件非常復(fù)雜的事情,但是實(shí)際上如果你在前一年就緊跟 Apple 步伐的話,就很簡(jiǎn)單了?;瑒?dòng)覆蓋和分割視圖的 app 會(huì)使用 iOS 8 引入的 Size Class 中的 Compact Width 和 Regular Height 的設(shè)定,配合上 AutoLayout 來(lái)進(jìn)行布局。也就是說(shuō),如果你的 app 之前就是 iPhone 和 iPad 通用的,并且已經(jīng)使用了 Size Class 進(jìn)行布局的話,基本上你不需要再額外做什么事兒就已經(jīng)能支持 iOS 9 的多任務(wù)視圖了。但是如果不幸你還沒(méi)有使用這些技術(shù)的話,可能你會(huì)需要盡快遷移到這套布局方式中,才能完美支持了。

視頻 app 的畫(huà)中畫(huà)模式相對(duì)簡(jiǎn)單一些,如果你使用 AVPlayerViewController 或者 AVPlayerLayer 來(lái)播放視頻的話,那什么都不用做就已經(jīng)支持了。但如果你之前選擇的方案是 MPMoviePlayerController 或者 MPMoviePlayerViewController 的話,你可能也需要盡早遷移到 AVKit 的框架下來(lái),因?yàn)?Media Player 將在 iOS 9 被標(biāo)記為 deprecated 并不再繼續(xù)維護(hù)。

相關(guān)專題筆記

iOS 9 多任務(wù)分屏要點(diǎn)

watchOS 2

在新的 watchOS 2 中,Watch App 的架構(gòu)發(fā)生了巨大改變。新系統(tǒng)中 Watch App 的 extension 將不像現(xiàn)在這樣存在于 iPhone 中,而是會(huì)直接安裝到手表里去,Apple Watch 從一個(gè)單純的界面顯示器進(jìn)化為了可執(zhí)行開(kāi)發(fā)者代碼的設(shè)備。得益于此,開(kāi)發(fā)者們也可以在 extension 中訪問(wèn)到像數(shù)字表冠和 (雖然都只是很初級(jí)的訪問(wèn),但是聊勝于無(wú)) 心跳計(jì)數(shù)這樣的情報(bào)。雖然有所進(jìn)步,但是其實(shí) Apple 在 watchOS 2 里表現(xiàn)出來(lái)的態(tài)度還是十分謹(jǐn)慎,這可能和初代 Apple Watch 的設(shè)備限制有很大關(guān)系,所以實(shí)際上留給 app 開(kāi)發(fā)者的電量和性能空間并不是十分廣闊。但是相比起現(xiàn)在的 WatchKit 來(lái)說(shuō),可以脫離 iPhone 運(yùn)行本身就是了不起的進(jìn)步了。而為了和 iPhone 進(jìn)行通訊,現(xiàn)在還添加了 WatchConnectivity 這個(gè)新框架。我們有足夠的理由期待 Apple Watch 和 WatchKit 在接下來(lái)兩三年里的表現(xiàn)。

相關(guān)專題筆記

30 分鐘開(kāi)發(fā)一個(gè)簡(jiǎn)單的 watchOS 2 app

UI Test

在開(kāi)發(fā)領(lǐng)域里,測(cè)試一直是保障產(chǎn)品質(zhì)量關(guān)鍵。從 Xcode 4 以來(lái),測(cè)試在 app 開(kāi)發(fā)中的地位可謂是逐年上升。從 XCT 框架的引入,到測(cè)試 target 成為新建項(xiàng)目時(shí)的默認(rèn),再到去年加入的異步代碼測(cè)試和性能測(cè)試??梢哉f(shuō)現(xiàn)在 Xcode 自帶的測(cè)試框架已經(jīng)能滿足絕大部分單元測(cè)試的需求了。

但是這并不夠。開(kāi)發(fā)一個(gè) iOS app 從來(lái)都是更注重 UI 和用戶體驗(yàn)的工作,而簡(jiǎn)單地單元測(cè)試可以很容易地保證 model 層的正確,卻很難在 UI 方面有所作為。如何為一個(gè) app 編寫(xiě) UI 測(cè)試一直是 Cocoa 社區(qū)的難題之一。之前的話有像是 KIF,Automating,甚至是 FBSnapshotTestCase 這種腦洞大開(kāi)的方案。今年 Apple 給出了一個(gè)更加誘人的選項(xiàng),那就是 Xcode 自帶的 XCUITest 的一系列工具。

和大部分已有的 UI 測(cè)試工具類似,XCUI 使用 Accessibility 標(biāo)記來(lái)確定 view,但因?yàn)槭?Apple 自家的東西,它可以自動(dòng)記錄你的操作流程,所以你只需要書(shū)寫(xiě)最后的驗(yàn)證部分就可以了,比其他的 UI 測(cè)試工具方便很多。

Swift 2

Swift 經(jīng)過(guò)了一年的改善和進(jìn)步,現(xiàn)在已經(jīng)可以很好地?fù)?dān)任 app 開(kāi)發(fā)的工作了。筆者自己也已經(jīng)使用 Swift 作為日常工作的主要語(yǔ)言有半年多時(shí)間了,這半年里的總體感覺(jué)是越寫(xiě)越舒暢。Swift 2 里主要的改動(dòng)是錯(cuò)誤處理方面的變化,Apple 從 Cocoa 傳統(tǒng)的基于 NSError 錯(cuò)誤處理方式變?yōu)榱?throw catch 的異常處理機(jī)制。這個(gè)轉(zhuǎn)變確實(shí)可以讓程序更加安全,新增的 ErrorType 也很好地將錯(cuò)誤描述進(jìn)行了統(tǒng)一。但是在實(shí)際接觸了一兩天之后,在語(yǔ)法上感覺(jué)要比原來(lái)的處理寫(xiě)的代碼多一些??赡苁情L(zhǎng)久以來(lái)使用 NSError 的習(xí)慣導(dǎo)致吧,筆者還并沒(méi)有能很好地全面接受 Swift 2 中的異常機(jī)制。不過(guò)這次 Apple 做的相對(duì)激進(jìn),把 Cocoa API 中的 error 全數(shù)替換成了 throw。所以不管情不情愿,轉(zhuǎn)型到異常處理是 Swift 開(kāi)發(fā)者必須面對(duì)的了。

另外 Apple 新加了一些像是 guard 和 defer 這樣的控制流關(guān)鍵字,這在其他一些語(yǔ)言里也是很實(shí)用的特性,這讓 Swift 的書(shū)寫(xiě)更加簡(jiǎn)化,閱讀起來(lái)更流暢。為了解決在運(yùn)行時(shí)的不同 SDK 的可用性的問(wèn)題,Apple 還在 Swift 2 里加入了 avaliable 塊,以前我們需要自己去記憶 API 的可用性,并通過(guò)檢查系統(tǒng)版本并進(jìn)行對(duì)比來(lái)做這件事情?,F(xiàn)在有了 avaliable 檢測(cè),編譯器將會(huì)檢查出那些可能出現(xiàn)版本不匹配的 API 調(diào)用,app 開(kāi)發(fā)的安全性得到了進(jìn)一步的保障。為了讓整個(gè) SDK 更適合 Swift 的語(yǔ)法習(xí)慣,Apple 終于在 Objective-C 中引入了泛型。這看似是 Objective-C 的加強(qiáng),但是實(shí)際上卻實(shí)實(shí)在在地是為 Swift 一統(tǒng) Apple 開(kāi)發(fā)開(kāi)路。有了 Objective-C 泛型以后,用 Swift 訪問(wèn) Cocoa API 基本不會(huì)再得到 AnyObject 類型了,這使得 Swift 的安全特性又上了一層臺(tái)階。

最后是 Swift 2 開(kāi)源的消息。Swift 的編譯器和標(biāo)準(zhǔn)庫(kù)將在今年年底開(kāi)源,對(duì)于一般的 app 開(kāi)發(fā)者來(lái)說(shuō)可能并不會(huì)帶來(lái)什么巨變,但這確實(shí)意味著 Swift 將從一門(mén) app 制作的專用語(yǔ)言轉(zhuǎn)型為一門(mén)通用語(yǔ)言。最容易想到的就是基于 Swift 的后端開(kāi)發(fā),也許我們會(huì)在看到 Javascript 一統(tǒng)天下之前就能先感受一下 Swift 全棧的力量?

App Thinning

筆者在日本工作,因?yàn)檫@邊大家流量都是包月且溢出的,所以基本不會(huì)有人對(duì) app 的尺寸介意,無(wú)非就是下載 5 秒還是 10 秒的區(qū)別。但是在和國(guó)內(nèi)同行交流的時(shí)候,發(fā)現(xiàn)國(guó)內(nèi) app 開(kāi)發(fā)對(duì)尺寸的要求近乎苛刻。因?yàn)?iOS app 為了后向兼容,現(xiàn)在都同時(shí)包含了 32 bit 和 64 bit 兩個(gè) slice。另外在圖片資源方面,更是 1x 2x 3x 的圖像一應(yīng)俱全 (好吧現(xiàn)在 1x 應(yīng)該不太需要了)。而用戶使用 app 時(shí),因?yàn)樵O(shè)備是特定的,其實(shí)只需要其中的一套資源。但是現(xiàn)在在購(gòu)買(mǎi)和下載的時(shí)候卻是把整個(gè) app 包都下載了。

Apple 終于意識(shí)到了這件事情有多傻,iOS 9 中終于可以僅選擇需要的內(nèi)容 (Slicing) 下載了。這對(duì)用戶來(lái)說(shuō)是很大的利好,因?yàn)橹恍枰?jí)到 iOS 9,就可以節(jié)省很多流量。對(duì)于開(kāi)發(fā)者來(lái)說(shuō),并沒(méi)有太多要做的事情,只需要使用 asset catalog 來(lái)管理素材標(biāo)記 2x 3x 就可以了。

給 App 瘦身的另一個(gè)手段是提交 Bitcode 給 Apple,而不是最終的二進(jìn)制。Bitcode 是 LLVM 的中間碼,在編譯器更新時(shí),Apple 可以用你之前提交的 Bitcode 進(jìn)行優(yōu)化,這樣你就不必在編譯器更新后再次提交你的 app,也能享受到編譯器改進(jìn)所帶來(lái)的好處。Bitcode 支持在新項(xiàng)目中是默認(rèn)開(kāi)啟的,沒(méi)有特別理由的話,你也不需要將它特意關(guān)掉。

最后就是按需加載的資源。這可能在游戲中應(yīng)用場(chǎng)景會(huì)多一些。你可以用 tag 來(lái)組織像圖像或者聲音這樣的資源,比如把它們標(biāo)記為 level1,level2 這樣。然后一開(kāi)始只需要下載 level1 的內(nèi)容,在玩的過(guò)程中再去下載 level2?;蛘咭部梢酝ㄟ^(guò)這個(gè)來(lái)推后下載那些需要內(nèi)購(gòu)才能獲得的資源文件。在一些大型游戲里這是很常見(jiàn)的優(yōu)化方法,現(xiàn)在在 iOS 9 里也可以方便地使用了。

人工智能和搜索 API

如果說(shuō)這屆 WWDC Keynote 上還有什么留給我印象深��的內(nèi)容的話,我會(huì)給更加智能的手機(jī)助理投上一票。雖然看起來(lái)還很初級(jí),比如就是插入耳機(jī)時(shí)播放你喜歡的音樂(lè),推薦你可能會(huì)聯(lián)系的人和打開(kāi)的 app 等,但是這確實(shí)是很有意義的一步?,F(xiàn)在的 Siri 只是一個(gè)問(wèn)答系統(tǒng),如果上下文中斷,“她”甚至不記得前面兩句話說(shuō)了些什么。一個(gè)不會(huì)記住 Boss 習(xí)慣的秘書(shū)一定不是一個(gè)好護(hù)士,而 Apple 正在讓 iPhone 向這方面努力。好消息是我們大概暫時(shí)還不用擔(dān)心會(huì)碰到故意不通過(guò)圖靈測(cè)試的機(jī)器,所以在人工智能上還有很大的空間可以發(fā)揮。

搜索 API 實(shí)質(zhì)上讓 app 多了一個(gè)可能的入口。有些用戶會(huì)非常頻繁地使用搜索界面,這是一個(gè)絕好的展示你的 app 和提高打開(kāi)率的機(jī)會(huì)。如果 app 類型合適的話,這是非常值得一做的追加特性。

游戲相關(guān)

游戲類的 app 因?yàn)樵诓煌囊苿?dòng)平臺(tái)上的用戶體驗(yàn)并沒(méi)有鴻溝似的差異,所以是最容易跨平臺(tái)的 - 畢竟現(xiàn)在無(wú)論哪個(gè)開(kāi)發(fā)商都無(wú)法忽視安卓的份額。這也是 Apple 自家的 SpriteKit 和 SceneKit 這樣的游戲框架一直不溫不火的原因。比起被局限在 Apple 平臺(tái),更多的開(kāi)發(fā)商選擇像是 Unity 或者 Cocos2d-x 這樣的跨平臺(tái)方案。但是今年 Apple 還是持續(xù)加強(qiáng)了游戲方面的開(kāi)發(fā)工具支持,包括負(fù)責(zé)狀態(tài)機(jī)維護(hù)和尋路等的 GameplayKit 框架,負(fù)責(zé)錄像和回放游戲過(guò)程的 ReplayKit 框架,以及物理建模的 Model I/O 框架。

這些其實(shí)都是在 Apple 的游戲開(kāi)發(fā)體系中補(bǔ)充了一些游戲業(yè)界已經(jīng)很成熟的算法和工具,為開(kāi)發(fā)者節(jié)省了不少時(shí)間。對(duì)于個(gè)人開(kāi)發(fā)者自制的游戲來(lái)說(shuō),Apple 的工具提供了相對(duì)低的門(mén)檻,易于上手。但是在現(xiàn)在大部分游戲開(kāi)發(fā)都需要跨平臺(tái)的年代,總感覺(jué) Apple 體系是否能順利走下去還需要進(jìn)一步觀察。

其他

HomeKit,CloudKit,HealthKit 等等雜七雜八的框架。如果是 iOS Only 的 app 的話,使用 CloudKit 做 BaaS 也許是不錯(cuò)的選擇,但是也要面臨今后跨平臺(tái)數(shù)據(jù)難以共享的風(fēng)險(xiǎn)。其他幾個(gè)框架專業(yè)性相對(duì)較強(qiáng),大部分需要配合硬件支援,其實(shí)一直說(shuō)智能硬件是下一個(gè)爆點(diǎn),但是至少現(xiàn)在為止還沒(méi)能爆出大的聲響,更多的卻已經(jīng)進(jìn)入到廉價(jià)競(jìng)爭(zhēng) (手環(huán)什么的你懂的),只能說(shuō)期待這些設(shè)備的后續(xù)表現(xiàn)吧。

最后是一個(gè)對(duì)于剛?cè)腴T(mén)或者打算投身到 Apple 開(kāi)發(fā)中的朋友的福利?,F(xiàn)在你可以不需要加入付費(fèi)的開(kāi)發(fā)者計(jì)劃就能將 app 部署到自己的設(shè)備上了,而在以前這至少需要你加入 99 美金每年的開(kāi)發(fā)者計(jì)劃,這可以說(shuō)進(jìn)一步降低了進(jìn)行 Apple 開(kāi)發(fā)的門(mén)檻。

總結(jié)

正如上面提到的,對(duì)開(kāi)發(fā)者來(lái)說(shuō),今年的 WWDC 并沒(méi)有像 13 年和 14 年那樣顛覆性的變化,大多是對(duì)已有特性的加強(qiáng)補(bǔ)充和對(duì)開(kāi)發(fā)工具鏈的增強(qiáng)。今年可以說(shuō)是一個(gè) Cocoa 開(kāi)發(fā)者們沉淀之前知識(shí),增進(jìn)自己技能的好機(jī)會(huì)?,F(xiàn)在 WWDC 15 還在如火如荼的進(jìn)行之中。如果你打算盡早擁抱新 SDK 的變化的話,請(qǐng)不要猶豫,直接訪問(wèn) Apple 的開(kāi)發(fā)者網(wǎng)站,去尋找和觀看自己感興趣的話題吧。

蘋(píng)果iOS 9值得升級(jí)的10個(gè)理由  http://www.linuxidc.com/Linux/2015-06/118595.htm

iOS 的詳細(xì)介紹:請(qǐng)點(diǎn)這里

責(zé)任編輯:倪明 來(lái)源: infoq
相關(guān)推薦

2014-07-17 09:31:50

iOS8SDK

2017-06-09 13:33:57

2015-10-16 14:27:29

iOS9collectionV特性

2021-12-24 11:24:59

React HackReact JavaScript

2013-06-28 14:19:20

2010-07-30 16:27:06

Flex開(kāi)發(fā)

2015-10-12 11:26:12

iOS 9適配

2011-05-26 11:13:36

Flex

2010-03-01 10:20:27

Flex

2013-06-13 09:59:02

2023-06-05 16:50:06

開(kāi)發(fā)TypeScriptJavaScript

2016-02-22 15:09:19

Android項(xiàng)目管理技巧

2025-02-25 08:30:00

前端開(kāi)發(fā)VSCode

2018-09-29 15:27:05

BinderAPPAndroid

2015-09-18 08:41:12

androidM權(quán)限

2015-08-31 09:41:38

androidM權(quán)限

2015-11-09 10:50:42

2015-05-19 09:51:57

WWDCiOS9

2024-04-26 13:36:01

2013-04-26 09:38:13

go
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)