【WWDC2019 Session】Xcode 11新特性

一線搬磚工人 2019-06-17 10:19:35 6420

寫在前面

Apple WWDC 2019 正如火如荼的進行著。按照WWDC計劃,美國時間從Tuesday到Friday都會有各種Session分享(實在干貨)。所有Session相關的Video、PPT都將陸續在 WWDC2019官網 放出。

擼主會根據Session Topic與實際工作的相關性并結合實際操作,陸續將Session內容第一時間分享給大家。

進入正題,本文分享的是Xcode 11新特性。

PS:1.本文含有大量圖片,主要是筆者實操的步驟截圖,流量不夠用的筒子們慎入!!2.Xcode 11 Beta版非常不穩定,經常閃退(WTF!!!),各位在實操的時候注意穩定情緒。3.因Beta版本的不穩定以及操作姿勢可能不同,如果大家實操的結果與文中有出入,請及時留言交流反饋。

Xcode 11新特性

  • Xcode 11主要包含如下新特性:

  • Xcode工作流更新。

  • Swift包管理工具(Xcode終于有了自己的可視化包管理工具了)。

  • Source Control代碼管理模塊更新。

  • 設計工具。

  • Debug工具更新。

  • Testing模塊更新。

  • Simulator更新。

  • Instruments性能分析工具。

  • 傳新的UI框架SwiftUI。

下面分別介紹這些新特性。

一、Xcode工作流更新image.png

Xcode 10右上導航的樣子

image.png

Xcode 11右上導航的變化

image.png

Library變化

image.png

新增Editor Options和Add Editor、以及MiniMap

image.png其他重要能力提升

image.png

主要的變化總結如下:

  • Library(代碼塊Snippets和圖片資源預覽),由花括號改成了“+”號。原先Snippets、圖片預覽兩項功能擴展為4項:1.SwiftUI控件庫。2.SwiftUI Modifiers。3. Snippets代碼塊。4.圖片資源預覽(包括后面提到的SPM中的圖片資源、Symbols)。5.Color選擇器。

  • Version Editor中把Authors(以作者為視角查看代碼更改記錄)、Logs(以提交時間為視角查看代碼更改記錄)移出(集成到Editor Options中),只保留Code Review(Comparison代碼比對)功能。

  • 新增Editor Options和Add Editor功能區。其中Editor Options包含:展示/隱藏SwiftUI畫布、展示/隱藏Authors視角、MiniMap等。Add Editor可以新增多個編輯窗口,終于不需要幾個編輯窗口來回切換了。

  • 新增MiniMap功能。有了代碼地圖預覽功能,查找代碼不再繁瑣。搜索代碼,MiniMap也同步高亮顯示。鼠標在MiniMap移動時,也會有方法高亮提示。

  • 其他重要功能能力提升。主要包括:代碼補全能力提升、拖拽代碼能力提升、拼寫檢查等。(由于時間和篇幅原因這部分功能筆者暫未實踐)

總結:從上面的更新Tips來看,Xcode正在往好的方向發展,之前飽受開發者詬病的沙雕功能也已慢慢被Apple優化。MiniMap、和Add Editor是個亮點,有了這兩個重要功能加持,跟其他IDE相比起碼在易用性上不落下風。

二、Swift包管理工具(SPM)

image.png

Xcode終于有了自己的可視化包管理工具了!!!喜大普奔,筆者趕緊嘗試了一下SPM。

SPM入口

用Xcode 11打開工程,點擊Project,在Info、Build Setting后面多了一個Swift Packages選項,這就是SPM入口。

點擊+號,Xcode會提示你綁定一個賬號: BitBucket、GitHub、GitLab

筆者綁定的是GitHub賬號,Xcode會按照時間順序自動檢索出該賬號下的repositories。

image.png

添加一個repository到工程(筆者加入的是Alamofire Swift網絡庫)

image.png添加完成之后,會在文件目錄的最下方出現Swift Package Dependencies目錄

使用新加入的repository

image.png在Appdelegate.m中引入剛添加的Swift Package->Alamofire。發起一個GET請求,打印出返回的HTML字符串,完美運行。

適配現有工程、創建Swift Package庫、二進制庫等等

這部分內容筆者會盡快去嘗試,然后拿出來分享給大家。除了以上的內容,還有幾個問題需要我們去思考并嘗試的。

  • SPM如何管理包之間的依賴問題?

  • SPM如何進行包的版本控制?

  • SPM如何適配私有Swift庫?

總結:跟SPM命令行工具相比,可視化的包管理工具顯得更簡單直接。(是不是可以理直氣壯的跟Cocoapods、Carthage說拜拜了?可能需要很長的路要走。。。)。SPM可視化工具的出現具有劃時代的意義,體現了Apple致力于完善Swift生態的堅定決心。

三、Source Control代碼管理模塊更新

image.png

相信大多數的iOS開發者很少使用Xcode自帶的Git GUI工具(實在太雞肋,功能少的可憐),一般用Source Tree或者Command Line居多。而且在Xcode 10以前,Xcode Git GUI工具不支持stash、cherry-pick命令,在Xcode 11中加入了這兩項功能。

在Source Control下拉菜單中加入了Cherry-Pick、Stash Changes選項。

image.pngStash Changes

image.png選擇Stash Changes選項,會自動彈出一個對話框,提示我們輸入一些Comment信息。點擊Stash按鈕自動跳轉到Git管理Tab下。

image.png在Git Tab頁面,會展示出當前本地Branches列表、Stash Changes列表、Tags列表、Remotes遠程倉庫列表。

在Stash右下角會有Stash功能選擇按鈕(也可以在左側Stash Changes右鍵彈出)。

image.png

簡要說下三個選項:

  • Apply Stashed Changes:跟git stash apply作用一樣,會把當前Stash Changes棧頂元素應用到當前分支,Stash Changes棧不會移除這個Stash。

  • Export Stashed Changes as Patch File:將某個Stash Changes導出一個Patch文件。

  • Delete:跟git stash pop作用一樣,將Stash Changes棧頂元素應用到當前分支,Stash Changes棧會移除這個Stash。

Cherry-Pick

假設有兩個分支A和B,進行合并分支的時候,你并不想把B的所有commit合并到A,而是想把單個commit合并過來,這時候就得用到git cherry-pick命令了。

image.png

選擇某個commit,然后cherry-pick,彈出框點擊cherry-pick就會將該commit合并到master分支,并生成一個新commit。

image.png總結:Xcode Git GUI工具雖然加入了Stash、Cherry-pick功能,但對某些版本管理需求復雜的業務場景遠遠不夠, 而對于基本的開發來講完全夠用了。

四、設計工具

image.png

暗黑模式切換操作區

image.pngSymbols(另類Icon Font)

image.png在Library中,可以選擇Symbols元素。

image.pngXcode 11竟然也有自己的標準圖片Icon庫了,而且可以進行Symbols Configuration,Icon Font即視感有沒有!!!

自定義圖片暗黑模式適配

image.png在Asset Catalog中添加自定義圖片,然后選擇Appearances,然后添加暗黑模式下的圖片即可。

總結:感覺Xcode 11中,不管SwiftUI還是Symbols,都跟Flutter正面剛上了啊。。不知接下來Xcode是不是也會提供類似于Material Design風格的控件集。官方Session中提到,Symbols會自動適配iOS 13暗黑模式(這個筆者實驗了下,Icon并沒有跟隨模式自動切換,知道怎么設置的同志可以留言告訴我一下)。

PS:在設計工具Topic分享中,出現了位女中豪杰->Lisa Xiao。不知是否是中國人,只是覺得真牛X。

五、Debug工具更新

image.png

網絡模擬測試

image.png之前真機網絡測試只能在手機上操作,現在可以直接在Xcode->Devices & Simulators中進行測試。

image.png

可以點擊真機左上角小按鈕來停止測試。

總結:Xcode 11進行網絡測試更方便

六、Testing模塊更新

image.png

  • Reusable across schemes:通過配置不同的schemes來實現復用。

  • Define what tests to include:自定義測試所包含的內容。

  • Specify multiple configurations:支持多種配置來進行白盒測試。

  • 支持iPad App for Mac以及SwiftUI的測試。

Testing加入了Test Server的模塊,用來把測試用例一次性運行在不同的平臺上(iPhone、iPad、Mac App)。

總結:一次編寫+一次配置=多端可測。Testing的相關更新,筆者尚未具體實踐,有興趣的筒子可以去體驗一把,貌似國內基于TDD開發模式的團隊少之又少吧。。。

七、Simulator更新image.png

Watch App模擬器更獨立,可以單獨運行

image.png

利用Metal重構Simulator,且Metal程序可以直接在模擬器中運行image.png

官方給出的Simulator性能數據:

  • 模擬器FPS達到60幀每秒。

  • CPU占用率減少至少90%。

  • 熱啟動至少提速2倍以上。

總結:Watch Simulator獨立出來,可以預見Apple對于可穿戴設備的重視程度,除此之外Apple Wacth還會有自己獨立的Watch App Store。另外Simulator利用Metal重構,其在性能上的表現確實讓人眼前一亮。是不是要開始Metal框架的學習了呢?

八、Instruments性能分析工具image.png

增強分類信息展示image.png

新增SwiftUI Instrument模版

image.png

增強Metal System Trace模版數據分析性能(數據分析速度提高10倍以上)

image.png

九、傳新的UI框架SwiftUI

兩個字:牛X

后續會繼續出一些關于SwiftUI的相關分享。

結束語

文章首發GitHub github.com/Lobster-Kin…

广东26选5开奖结果查