Xcode 11 初體驗
今天更新了
Xcode 11
感覺很不錯(主要很多陌生的東西,但是很有意思)!這裡跟大家一起分享一下!前面翻譯過一篇官方文件: 但是大家紛紛反饋看不懂,其實大家更希望看到就是一些帶著更新去操作的東西。趁著最新更新正是版本的 Xcode 11 於是就有這一篇 Xcode 11 初體驗
Xcode工作流的改進(Workflows)
工程建立
- 建立工程進來,就會發現
User Interface
可以進行選擇SwiftUI
、storyboad
其中我有兩篇部落格也介紹到了SwiftUI
: SwiftUI - 百行程式碼變十行,Swift再創輝煌 和 WWDC - SwiftUI - 初戀般的感覺
程式碼塊
- 程式碼塊也做了調整,介面漂亮直觀、編輯顯示也非常清晰! (本人是非常喜歡程式碼塊的,對於這個調整我要點贊)
- 將
Version Editor
中的log
選項卡移到了檢查器中,組成了新的Source Control History
區。 - 將
Assistant
、和Vesion Editor
下的Autor
選項卡合併為一項,並從主導航中移除,向下移到每個編輯面板中,組成Editor Option
。主導航中只保留Code Review
功能。 - 新增
Add Editor
、MiniMap
。
我們這裡著重介紹一下 Editor Options
、Add Editor
MiniMap
這3個選項。
Editor Options
- 通過Editor Options可以設定當前編輯器的顯示模式,包含:
Editor Only
,Editor and Canvas
,Editor and Assistant
這三個編輯選項。 -
Editor Only
:只顯示程式碼編輯器。 -
Editor and Canvas
:程式碼編輯器和SwiftUI
預覽檢視。 -
Editor and Assistant
:程式碼編輯器和輔助檢視。
其中說明一下:SwiftUI 預覽 系統最低要求macOS 10.15
Add Editor
提供了編輯視窗的任意切割功能:
- 可以指定檔案開啟的位置。
- 使用
Focus Mode
專注使用某一個視窗。 - 綜合這個功能還是不錯的,我經常也會開啟多個頁面!來回進去出來麻煩!
直接點選這個按鈕,會橫向進行分割。 按住 Option
按鍵點選它,會縱向分割, 下圖是一個分割後的介面示例
上圖中介面被分成了 3 個編輯視窗。 左邊被上下分割成了兩個小視窗,右邊被單獨分割出一個大視窗。
指定檔案開啟位置
上面我們介紹了視窗分割,在 Xcode 11
中,你還可以按住 Option + Shift
,然後在左邊點選要開啟的檔案,這時會出現視窗選擇提示
你可以用鍵盤,或者滑鼠任意方式選擇你要開啟這個檔案的視窗,選中後點擊滑鼠左鍵或者鍵盤的 Enter
鍵,就可以在指定視窗開啟這個檔案了。除此之外你還可以移動滑鼠到兩個視窗之間,將要開啟的檔案在這裡插入一個新的視窗:
綜合這個功能,更加方便我們對比閱讀,快速開發!尤其在一些關聯性比較強的幾個頁面,我們就不再需要切來切去,更加方便清晰
MiniMap
MiniMap
是本次更新的特色(吐槽有點模仿)提供這個縮略小圖,當然能夠讓開發者更加清晰,這個功能還是非常不錯的!~~~大局觀 ??
並且你可以通過 MiniMap
快速的跳轉到檔案的任何區域。MiniMap
支援程式碼標記, 斷點顯示,以及搜尋高亮提示,非常多的便捷功能。
比如下圖, 我們搜尋 app
這個關鍵字,右邊的MiniMap
上會標記處程式碼檔案中所有命中的搜尋, 並且還會高亮展示出當前命中搜索的位置(這個需要仔細看一下)
從上面的截圖想必你也應該感受到這個 MiniMap
的作用了!
編輯器功能增強
程式碼註釋的補齊功能。
現在可以直接點選函式方法,右鍵選擇 Add Documentation
會自動補齊程式碼註釋,簡潔方便。看來蘋果爸爸也實在受不了我們亂七八糟沒有註釋的程式碼,提倡我們文明程式設計 ??
Change Bar
-
Change Bar
這個功能之前也有,我還是比較喜歡的! 當你的專案關聯了版本控制工具時,比如Git
,Xcode
會檢測出當前檔案哪些地方相對於上次遞交的版本有更改,並且會通過在左邊顯示一個藍色線條標記出來:
-
Change Bar
點選左鍵還可以選擇show Change
檢視我們變化之前的程式碼,其實也是對比變化的功能,當然你可以選擇Discard Change
來刪除變化更新!這就比較爽了!可能你這個時候你就會想到前面跟你介紹的Code Review
功能 是來對比整個檔案變化!
Swift Package Manager
Xcode 11
還有另外一個重要的更新,就是對 Swift Package Manager
的內建整合。這個功能貌似在挑戰 CocoaPods
! 為什麼這麼說呢?我下面給大家開始演示
- 開啟專案檔案,然後找到
Swift Packages
選項卡:
- 點選新增要匯入的第三方框架,這裡以
RxSwift
為?
- 點選
Next
會執行驗證,稍等片刻就會讓你選擇版本以及分支!
- 選擇完畢點選
Next
就會開始匯入!Resolving 三方框架
設計工具(Design Tools)
- 可以隨時檢視各裝置上的效果以及作出更改。
- 在開發和除錯時,隨時在暗黑和明亮模式之間進行切換。
- Asset目錄可以使你輕鬆的控制影象和顏色在暗黑和明亮模式之間進行切換。
- 可以方便的使用瀏覽所有SF符號
- 在蘋果內部還是提供了很多方便的,比如下圖,你可以根據關鍵字搜尋出你需要的圖示
- 同時你放到相應的介面上面,你還可以進行調整!
程式碼管理(Source Control)
在Xcode 11中,新增了 Stash Changes
和 cherry pick
功能。
Stash Changes
- 選擇
Stash Changes
選項,會自動彈出一個對話方塊,提示我們輸入一些Comment
資訊。點選Stash
按鈕自動跳轉到Git
管理Tab
下。
在 Git Tab
頁面,會展示出當前本地 Branches
列表、Stash Changes
列表、Tags
列表、Remotes
遠端倉庫列表。
在 Stash
右下角會有 Stash
功能選擇按鈕(也可以在左側Stash Changes
右鍵彈出)。
簡要說下三個選項:
-
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命令了。
選擇某個 commit
,然後 cherry-pick
,彈出框點選 cherry-pick
就會將該commit
合併到 master
分支,並生成一個新 commit
。
Debug 工具升級
Xcode 11
中,對模擬器除錯做了很多加強。 你現在可以點選除錯配置介面,動態改變模擬器的執行引數,比如這裡改變主題模式到黑色,改變文字大小,更改輔助選項等等:
這樣增強我們開發人員的除錯能力,對於每次編碼再調整的方式大大優化!其實從這裡大家也或多或少也感知到了現在 Apple 對於視覺化的能力得到提升! 說白了我們為什麼喜歡用 Xcode
勝過 AppCode
是因為
-
Xcode
的官方性 -
Xcode
的視覺化能力更強 -
Xcode
的操作更讓開發人員省心,省力!
對網路和溫度的模擬
Xcode 11
還加入了對網路環境和裝置溫度的模擬。這兩個條件對開發者來說應該不陌生,它們也是最難通過常規手段復現的場景。在裝置管理視窗中,現在增加了這幾個選項
- 根據
Network Link
可以選擇你需要的狀態,當然Thermal status
可以選擇!都可以讓你的 APP 在更有預期的狀況下執行。
模擬器
- 直接在Watch模擬器上執行Watch app。
- 基於Metal多模擬器進行了更新,Metal程式可以直接在模擬器上執行。
- 模擬器FPS達到60幀每秒。
- CPU佔用率減少至少90%。
- 熱啟動至少提速2倍以上。
效能分析工具(Instruments)
- 層次更加分明,更容易瀏覽和更正資料。
- 新的
Swift UI
模版。 - 完全重寫了
Metal System Trace
模版,速度提升了10倍以上。
SceneDelegate 更新
Apple
建議我們把檢視層級相關的方法從 didFinishLanchingWithOptions
遷移到 SceneDelegate
中的 willConnectTo
方法中。這樣做有兩個好處:
- 首先可以提高預覽結果呈現的速度
- 其次在應用進入後臺時,不會做一些額外的操作,只會做一些必要的操作,使應用快速進入睡眠狀態,以節省耗電.
關於Swift UI 的更新
其中我有兩篇部落格也介紹到了 SwiftUI
:
參考: Apple 官方文件 一線搬磚工人
PS:想要獲取給iOS中高階面試官的一份招聘要求 面試題答案的小夥伴可以繼續關注我的部落格,我會在下面的內容裡面會更新出來!同時看到這裡了,點個贊吧!Thanks♪(・ω・)ノ