Stories

Detail Return Return

WWDC2023 Session系列:探索XCode15新特性 | 京東雲技術團隊 - Stories Detail

一、版本説明

XCode 15 beta 發佈於 2023 年 6月5日, 可支持 macOS 13.3 或以上版本, 你可以按需下載需要的平台。

二、新增特性

1.代碼智能提示 (Code completion)

  • 創建新的文件在引用時的提示

首先創建一個新的文件

然後,在引用的地方,輸入文件首字母會立即自動彈出補全提示。

  • 函數調用時列出所有可能的參數排列

在沒有提示的情況下,調用函數時如何傳參往往是比較困難的,不知道可以傳哪些參數, 現在 XCode 將列出所有可供選擇的可能,你可以更輕鬆找到合適的參數列表並選擇它。

  • 自動分析代碼上下文,並給出最合適的建議。

例如在 Text 組件調用中,輸入"點號" 後,在彈出的提示列表中的最上方會提示 font (此時 Text 還沒設置 font ),這是因為XCode分析了上下文,“識別出” 這是一個 Text, 並且此時還沒有設置過字體,你可能需要它,因此將字體放在建議的最上方。

2.資產文件作為變量引用 (Asset catalogs)

過去資產文件如圖片是以 “字符串” 作為圖片名稱在代碼中被引用,現在直接通過類似變量的標識符去引用它,它可以接受編譯時的檢查。

  • 資產引用的編譯檢查

修改資產的名稱為 “MultipleClouds ” 後,引用處產生了編譯錯誤

這是因為此前資產的名稱是 "clouds", 現在,編譯器提示你修改它為 "MultipleClouds"。

  • 代碼中引用圖片資產的智能推薦

編輯資產的名稱時,可以獲得XCode 的智能推薦。

3.本地化資源集中管理 (Localization)

  • 舊項目的本地化文件遷移

XCode 設置中 選擇 Edit > Convert to string catalog, 此時 XCode 會自動掃描工程中的 storyboards、.strings、 以及 .stringsdict 類型的文件。並將其列在下圖所示的列表中,你可以根據需要選擇部分或全部文件進行遷移。

遷移完成後,所有的本地化翻譯將被整合到一個 Localization 目錄中,你還可以查看到不同語言翻譯的進度。

  • 追蹤代碼中的字符串變化

每次構建時,XCode 會自動提取代碼中的所有字符串。當添加新字符串或刪除某個字符串時,本地化目錄會標記出受影響的地方,並給出 “陳舊” 和 “新增” 的標記進行凸顯,從而提示你去翻譯或者刪除它。

4.文檔 (Documentation)

  • 新的文檔卡片樣式

  • 文檔小助手

選擇小助手,然後選擇文檔預覽。

左邊是代碼,右邊可以看到對應的文檔,你可以實時編輯和預覽,這看起來有點像 MD。

5.新增 Swift 宏 (Swift macros)

系統部分框架已經實現了宏,如 Swift standard library、foundation、 以及一個新的 Swift data framework.

  • 創建宏包 (macro package)

使用快捷鍵 Command-Shift-A, 然後在彈出的輸入框中輸入 New package 可以快速創建一個帶有樣例代碼的宏包,你可以修改並實現它。

然後選擇 Swift Macro

以下是一個已經實現的宏包 EnumHelper,而CaseDetection 被實現為一個宏,宏的代碼和一般的 swfit 代碼沒什麼大的區別。

以下是引用了宏包 EnumHelper 中的宏 @CaseDetection,它默認會隱藏了宏實現,

  • 展開宏和斷點調試

當你需要時,你可以選擇展開宏,通過 Editor > Expand Macro 可以展開它。

展開後,還可以使用斷點,如下圖所示:

6.運行時預覽 (Previews)

  • 基於宏快速創建一個預覽實例

使用宏 #Preview 快速創建一個預覽實例, 在右側邊欄可以看到預覽效果。

以下繼續添加了一個帶名稱的預覽實例,當有多個預覽實例時,可以在右側邊欄的左上角切換tab 預覽對應實例。

  • AppKit 及UIKit 的預覽支持

為了兼容非SwiftUI 的代碼,可支持對舊工程的 Appkit 及 UIKit 添加預覽。

  • Widget 預覽支持

7.書籤功能 (Bookmark)

  • 添加書籤

你可能經常會遇到忘記此前關注或使用的一些重要代碼,在你想要找到之前的那些代碼時,你發現沒有辦法快速找到它。現在,通過添加可命名的書籤來標記他們。

添加完成後,書籤被展示在左邊欄的書籤tab下。

  • 書籤分組

你可以將多個書籤打包成一個組,作為有關聯性的代碼。

你也可以設置一個組名,便於搜索和理解。

  • 設置為代辦或完成

你可以將書籤作為任務來管理,比如你可以將書籤設置為完成狀態,它將會在左側顯示一個對勾。

8.代碼版本控制 (Source Control Navigation)

  • 版本控制面板

在新的面板中,所有的版本改動將集中在一個文件中一起預覽,通過上下滑動可以看到多個文件的修改內容,從而避免來回切換修改的文件。

修改的預覽是可交互的,你可以通過操作來擴大預覽區域,從而查看當前修改處的更多上下文。

除了預覽,你還可以直接在當前界面下繼續編輯,編輯完成後,可以提交 commit,然後push。

可通過左側的豎條修改狀態。

小結:代碼修改的預覽、編輯、提交、推送都在同一頁面下,減少不必要的界面切換,操作更便捷。

9.測試 (Testing)

  • 測試面板

Apple 對新的測試面板使用Swift 進行了重寫,提速了45%,下圖案例列出了測試計劃中的測試用例。

  • 查看測試結果

測試結果的整體統計信息看起來簡明扼要,主要包括:

Top Insights: 分析測試結果,給出一些問題分析的建議,包括錯誤的原因、分佈、最耗時的測試用例。

Tests: 展示測試用的統計數據,包例成功率,按機型、語言分類,以及錯誤列表。

  • 可交互的測試用例回放

測試用例的詳情信息可以被查看,它展示了自動化的測試步驟,以及標出發生錯誤的節點,你可以通過以上信息來幫助找出問題的原因。

10.調試 (Debugging)

  • 控制枱引入 OSLog 的支持

OSLog 可用來很好的捕獲運行時信息。它可定義及收集結構化的日誌信息,使日誌看起來井井有條,接下來讓我們看看如何使用它。

首先,使用 OSLog 編寫一段日誌:

默認情況下,日誌的元信息是被隱藏的,僅顯示開發者輸入的日誌信息,控制枱中對不同嚴重程度(如 info、 notice 、error 等)的日誌,標記為不同的顏色以示區分。

你可以選擇性的添加展示日誌的分類,包括子系統類別等元信息。

還可以過濾不同嚴重程序的日誌。

最後,我們可以通過操作某條日誌,跳轉到日誌代碼定義處。

11.分發 (Distributing)

  • 新增 TestFlight 包的備註信息

你可以給 TestFlight 的包添加一些附屬的備註信息,例如需要測試哪些內容的説明,這些信息會被展示給獲取 TF包的測試者。

  • 查看框架簽名

XCode 引入了XCFrameWork 可以對簽名的框架進行驗籤,從而顯示其來源,並保障其完整性不被破壞,從而建立框架的信任機制。

  • 隱私清單

框架作者可以給自己的框架添加隱私清單,來説明隱私的使用情況和如何保護敏感數據。隱私清單會與框架捆綁一起簽名,因此,隱私清單是可被信任的。

來看看下圖所示的隱私清單:

你可以使用XCode可以生成和查看完整的隱私報告

  • TestFlight 僅分發到內部測試

當修復問題時,你不希望測試包被真實用户看見,這時你可以通過勾選 “僅分發給內部測試” 然後只分發給自己公司或團隊的測試者 ,這樣可以防止被誤發給共測用户。

以下是另外一個操作內部測試的路徑

三、總結

XCode15 在開發效率和性能、安全提升上主要表現為以下概括的內容:

更簡潔: 主要體現在宏、文檔、和日誌上。

更智能: 提升自動補全代碼能力、提升測試分析能力。

更便捷: 包拆分下載、代碼補全、書籤、git集中管理,本地化集中管理。

更安全: 圖片資產符號化管理, 通過對框架和隱私的處理,使得代碼更加安全。

作者:京東零售 王晰源

來源:京東雲開發者社區

user avatar blbl-blog Avatar zjkal Avatar java_study Avatar happy2332333 Avatar qichengxiaoqi Avatar wang_yb Avatar ximinghui Avatar daixiaoyulq Avatar hope_wisdom Avatar jieduanxingdebugger Avatar xiangchujiadepubu Avatar dadehouzi Avatar
Favorites 16 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.