Xcode 13 正式版发布,来看看有什么新特性
👇👇關注后回復?“進群”?,拉你進程序員交流群👇👇
作者丨小集
來源丨小集(ID:zsxjtip)
Xcode 13 包括適用于 iOS 15、iPadOS 15、tvOS 15、watchOS 8 和 macOS Big Sur 11.3 的 SDK。Xcode 13 Release Candidate 支持 iOS 9 及更高版本、tvOS 9 及更高版本以及 watchOS 2 及更高版本的設備上調試。Xcode 13 需要運行 macOS 11.3 或更高版本的 Mac。
通用
Xcode 13 包括對 Swift 并發編程的原生支持、對 Xcode Cloud 持續集成和交付的支持、對 Git 拉取請求的集成支持、使用 DocC 在 Swift 框架中創建和查看文檔的能力、Vim 鍵綁定支持、Swift 包集合;
可以在命令行上使用 cktool 與 CloudKit 數據庫架構和記錄進行交互;
可以在命令行上使用 TextureConverter 將紋理壓縮為所有 Metal 壓縮紋理格式;
對于相同的內容,Xcode 13 的 XIP 存檔現在大約小 15%。
Clang 編譯器
為了支持新的 Swift 并發模型,clang 現在可以在您多次調用完成處理程序或執行路徑沒有完成處理程序調用時發出警告;
新的?-fobjc-constant-literals?標志允許您聲明全局常量文字,并對其在 Objective-C 代碼中支持的其他文字執行優化;
可以在 Xcode 的構建設置中配置 C++20 和 GNU++20 C++;
支持 C++20 似然屬性 [[likely]] 和 [[unlikely]]
資產目錄
應用程序現在可以使用其資產目錄中的 iOS 應用程序圖標資產作為備用應用程序圖標;
允許選擇適用于所有平臺(包括 watchOS)的通用系統顏色;
構建系統
.xcconfig 文件現在支持使用?\?跨多行拆分長列表;
當使用?-xcconfig?命令行標志和?XCODE_XCCONFIG_FILE?環境變量將 xcconfig 文件傳遞給 xcodebuild 時,Xcode 會使用 New Build System 語義解析它們,該語義也支持條件參數。
通過將 SUPPORTED_PLATFORMS 構建設置設置為您支持的平臺列表并將?ALLOW_TARGET_PLATFORM_SPECIALIZATION?設置為 YES,將框架配置為在單個構建操作中為多個平臺構建;
可以在構建階段使用平臺過濾器,并為所有支持的平臺定位依賴項。
當發生構建失敗時,xcodebuild 現在會在構建日志末尾的摘要中顯示每個失敗命令的目標和項目名稱;
當腳本階段或自定義構建規則聲明不屬于構建輸入的一部分,且未聲明為構建中任何其他任務的輸出依賴項的輸入依賴項時,構建系統會發出警告;
構建選項表現在包括一個依賴順序選項,它取代了并行構建選項。
Core Data
使用 Core Data 模型編輯器的屬性檢查器中的 Allows Cloud Encryption 復選框來支持 CloudKit 加密記錄字段功能。
Core ML
Xcode 的 Core ML 模型編輯器現在支持新的 Core ML 包格式?.mlpackage,以及對其元數據和描述的直接編輯。
當部署目標是 macOS 12、iOS 15、tvOS 15 或 watchOS 8 時,Swift 為 Core ML 模型生成的接口現在包括通過強類型?MLShapedArray?屬性訪問多維輸入和輸出。
Create ML
兩個新模板:Hand Pose Classification 和 Hand Action Classification,可用于訓練模型來解釋手部姿勢;
Sound Classification 模板的新 Audio Feature Print 選項能夠以更高的準確度、更低的延遲和更小的模型尺寸更快地訓練聲音分類器模型。
調試
Xcode 的控制臺現在支持通過 Editor > Wrap Lines 菜單項切換換行;
要在一行上設置列斷點,請按住 Command 鍵并單擊表達式,然后從 Actions 菜單中選擇 Set Column Breakpoint;
如果調試器尚未解析斷點,則斷點的圖標將更改為占位符字形;
文檔
Xcode 可以根據 Swift 代碼中的注釋以及隨附的文章生成文檔;
當編寫項目文檔時,Code completion 會提供建議。它在源文件中編寫文檔注釋和在 .docc 目錄中編寫標記文件時提供建議。
Quick Help 現在使用 DocC 來呈現項目文檔并在文檔窗口中呈現指向項目文檔的鏈接;
索引
Xcode 索引宏名稱。它們現在出現在 Open Quickly 中。
Instruments
Instruments 中的調用樹視圖和擴展詳細信息視圖現在用“[inlined]”標記指示內聯函數。
通過詳細視圖導航欄更容易發現不同的視圖。現在可以通過快捷方式(Command-1、Command-2 等)訪問詳細視圖。
在命令行上使用?xctrace export?從包含Allocations, Leaks, 和 VM Tracker instruments 的跟蹤中導出表數據。
Instruments 擴展詳細信息視圖,現在在選擇關聯的詳細信息視圖行時顯示?os_log?和?os_signpost?消息和回溯。
Run Information 視圖現在出現在 Instruments 工具欄的活動視圖區域中。
CPU Counters 模板現在更加可靠并且具有更好的性能;
leaks?命令具有三種新模式:-referenceTree、-autoreleasePools和?-debug;
Network 模板現在包含一個用于捕獲和分析 HTTP 流量的新工具
Instruments 時間線視圖現在使用基于 Metal 的渲染器以獲得更流暢的體驗,包括對時間線可用性的整體改進;
os_signpost?工具的記錄設置現在支持在記錄期間為 dynamicTracing 和 dynamicStackTracing 日志記錄類別指定 os_signpost 子系統。
新的 CPU Profiler 模板允許使用基于周期的性能監控中斷 (PMI) 分析 CPU 工作負載
為了支持在 macOS Monterey 和 iOS 15 中生成的新 JSON 格式的崩潰日志,Instruments 包含了一個新的?CrashSymbolicator.py?腳本。
Interface Builder
您現在可以在大綱視圖中手動重新排序 Storyboard 場景。
macOS 的 Storyboard 和 XIB 使用 UINIbEncoder 進行編譯,以減少文件大小并提高運行時性能;
現在可以使用鍵盤選擇和導航大綱視圖組,例如 Constraints;
Interface Builder 有一個重新設計的畫布底部欄,帶有用于更改設備和布局的彈出窗口,以及用于更改設備外觀和方向的開關。
添加了對 UIButton 和 UIBarButtonItem 上的 changesSelectionAsPrimaryAction 屬性的支持;
支持從對象庫中創作和拖動 iOS Core Location Buttons
添加了對用于靜態表格視圖中表格視圖單元格的新內容配置樣式的支持
UITabBar 和 UIToolbar 檢查器現在支持配置 scrollEdgeAppearance
Interface Builder 現在支持 UIButton.menu
編輯啟動 storyboards 時,如果總圖像資源大小超過運行時閾值限制,Xcode 會發出設計時警告。?
Watch Storyboards 的預覽窗格現在顯示畫布樣式的邊。?
現在可以在 Interface Builder 場景中預覽以下輔助功能設置:動態類型、粗體文本、按鈕形狀、開/關標簽、增加對比度和降低透明度。
現在可以啟用 UILabel 的 showsExpansionTextWhenTruncated 屬性以在標簽被截斷時顯示工具提示擴展。
從文檔檢查器 > 模擬指標 > 場景大小自定義 Mac Catalyst 模擬場景大小
通過屬性檢查器為使用 Mac Catalyst 構建的應用程序指定 UIControl 對象上的工具提示。?
Interface Builder 現在支持 UIBarButtonItem.menu
Interface Builder 現在支持新的 UITextContentType 屬性,包括:shippingTrackingNumber、flightNumber 和 dateTime。
iOS、iPadOS、macOS 和 tvOS 場景支持兩種新的 SF Symbol 渲染模式:分層和調色板。?
Interface Builder 現在支持使用 UIButtonConfiguration 樣式創作按鈕,包括普通、灰色、著色和填充。
UINavigationBar、UITabBar 和 UIToolbar 檢查器現在支持配置 UIBarAppearance 實例。?
UIButton 和 UISlider 支持為使用 Mac Catalyst 構建的應用程序選擇首選的行為風格。?
在視圖控制器的大小檢查器中使用 Freeform 模擬度量的 Storyboard 場景現在可以直接在畫布中使用調整大小旋鈕調整大小。
NSButton 斜角類型在 macOS 12 中支持斜角顏色。
在適用于 macOS 12 的應用程序中,您可以使用屬性檢查器中的 localize 屬性在非系統 NSMenuItem 上配置本地化的等效鍵選項。
在 iOS 15 的應用程序中,可以使用屬性檢查器中的 localize 屬性在非系統 UI 菜單命令上配置本地化的等效鍵選項。
鏈接
dyld 共享緩存已拆分為多個文件
使用 macOS 12 或 iOS 15 或更高版本的部署目標構建的所有程序和 dylib 現在都使用鏈式修復格式
統一 dyld2 和 dyld3。現在所有平臺上只有一個 dyld。
DriverKit 運行時現在有一個 dyld 共享緩存。
如果 DYLD_PRINT_SEARCHING 環境變量在啟動時設置為 1,則 dyld 會打印出它搜索的所有位置的路徑,以找到要加載的 dylib。
本地化
Xcode 現在可以打開 Xcode 本地化目錄 (.xcloc) 以查看和編輯字符串和其他本地化資產的翻譯。
新的 Use Compiler to Extract Swift Strings 構建設置調用 Swift 編譯器從 Text()、String(localized:)、AttributedString(localized:) 初始值設定項、SwiftUI 的 LocalizedStringKey 和 Foundation 的 StringLocalizationKey 中準確地提取字符串插值和字符串文字。
添加了對 genstrings 和本地化導入和導出的支持,以提取在 Objective-C 代碼中使用新 NSLocalizedAttributedString 宏的字符串。?
導出本地化時,多個本地化中的錯誤現在會聚合到一個警報對話框中。?
在導出以進行本地化時,Xcode 會自動從 Info.plist 文件中提取 NSGKFriendListUsageDescription、NSLocationTemporaryUsageDescriptionDictionary 和 NSFallDetectionUsageDescription。
Metal
Metal Debugger 現在支持 Selective Shader Debugging,它允許您限制大型 Compute 著色器的調試范圍。這導致更快的著色器調試器會話創建和迭代時間。
Metal Debugger 中的新捕獲控件可讓您精確控制來決定捕獲 Metal 工作負載的哪個部分,以及捕獲多個幀或范圍的選項。
Metal Debugger 現在支持導入 metallibsym 文件,這使您可以在應用程序中進行 Metal 著色器調試和分析,而無需在您的 metallib 中嵌入著色器源。
Metal Debugger 中的 Apple GPU 可以使用 GPU 時間線。使用此時間線可視化和檢查 Metal GPU 命令的并行執行以及一組精選的 GPU 計數器。
Metal 管道狀態對象現在在 Metal Debugger 中表示為資源,包括一個全新的 Metal Pipeline States 和 Metal Libraries 查看器,以及 Metal Debugger 的 Memory Viewer 中的 Metal Pipeline 狀態的 GPU 內存。
Instruments 的 Metal System Trace、Xcode 中的 Metal Debugger 以及全新的 Condition Inducer 中提供了新的一致 GPU 性能狀態分析工作流。
現在可以在 Metal System Trace 模板的記錄選項中覆蓋 GPU 性能狀態。
Metal Debugger 現在支持 Metal 光線追蹤以及新的高級加速結構查看器。
Metal 應用程序錄制設置現在特定于正在配置的設備。
Organizer
Xcode 現在可以近乎實時地提供崩潰報告,數據保留時間更長。
Xcode 現在提供具有更多過濾功能和更多統計信息的崩潰報告。
現在可以通過 URL 共享崩潰報告
Xcode 現在會顯示您的崩潰問題的 TestFlight 反饋,以便更好地了解問題所在
現在可以根據任何特定的歷史應用程序版本、任何特定的歷史應用程序版本、產品類型(如 App Clip、應用程序擴展或主應用程序)以及 TestFlight 或 App Store 的發布歷史記錄過濾 Energy 報告列表。
Xcode Organizer 中的新 Scroll Hitch Goals 使分析應用程序版本的滾動體驗變得容易
當您查看應用的指標時,您現在可以選擇查看應用的 App Clip 的指標
Xcode Organizer 中新的 Terminations 指標顯示前景和背景終止,按原因細分
Xcode Organizer 中的歷史數據現在可以為每個指標圖表顯示最多 16 個應用程序的最新版本,提供應用程序在更大時間窗口內的性能趨勢。
現在,當您查看指標時,檢查器會顯示您應用的發布日期信息。
Xcode Organizer 中 Disk Write Reports 的 Qualitative Insights 在檢查器中顯示稱為 Insights 的新信息
現在 Xcode Organizer 中提供了 Smart Insights,可幫助您比以前更快地發現應用程序的功能和性能回歸
預覽
預覽現在支持在預覽視圖時檢查視圖的輔助功能元素
Project Navigator
當 Products 組位于默認位置時,項目導航器會隱藏它
Move Focus to Editor 命令現在解釋 vim 方向移動鍵。
schema 編輯表不再有最大尺寸
簽名和分發
xcodebuild 現在支持使用 App Store Connect API 密鑰對 Apple Developer 網站進行身份驗證。
Xcode 現在提供在您第一次將新應用上傳到 App Store Connect 時創建應用記錄的功能。
將應用上傳到 App Store Connect 時,Xcode 中的分發助手會檢測您的應用是否具有有效的內部版本號 (CFBundleVersion)。
Xcode 分發助手中的自動簽名現在支持云簽名。
Xcode 13 支持在 Mac 上為 TestFlight 配置應用程序
您現在可以在命令行上使用 notarytool 與 Apple 公證服務進行交互
Source Control
現在,您可以在登錄 GitHub 或 Bitbucket Server 帳戶后,使用 Xcode 的源代碼控制功能創建、審查和合并拉取請求。
您現在可以從文檔選項卡欄中的任何編輯器(或編輯器拆分)中啟用代碼審查,默認情況下它會在內嵌演示中顯示比較。
源碼編輯器
Xcode 13 引入了 Vim 鍵綁定,在源代碼編輯器中模擬 vim 體驗并結合現有的編輯器功能。?
在首選項中啟用 Vim 鍵綁定,使用文本編輯 > 編輯中的啟用 Vim 鍵綁定選項。
可以通過選擇 Edit > Copy Location 以?<filename>:<line-number>?的形式將所選內容的當前位置復制到剪貼板。
在 Swift 中將占位符擴展為閉包時,代碼完成使用閉包的參數名稱而不是?<#Type#>。?
Xcode 13 中的 Swift 語法高亮顯示是即時且無閃爍的,無論是在文件之間進行編輯還是導航。?
即使您的代碼不完整或您的項目無法編譯,Swift Jump to Definition 現在也能提供更具彈性的體驗。
從 Swift 類、協議或方法聲明跳轉到定義還可以輕松導航到整個工作區中的所有子類、擴展和符合協議的類型。
Xcode 13 包括重新設計的 Swift 代碼完成功能,可最大限度地提高可靠性和性能,尤其是在項目源代碼中存在結構和邏輯不一致的情況下。
Static Analyzer
靜態分析器現在警告帶有副作用的斷言、無限循環和更多 C++11 std::move 誤用情況。?
StoreKit
Xcode 中的 StoreKit 測試支持對使用 StoreKit 新的現代基于 Swift 的 API 構建的應用內購買進行全面測試。
Swift Packages
根包和基于分支的包依賴項現在可以在其目標設置中使用 unsafeFlags。
Swift 包現在可以聲明 Mac Catalyst 的部署目標,并且現在可以在構建條件中將 Mac Catalyst 指定為平臺。
當包聲明工具版本為 5.5 或更高版本時,macOS 的構建條件不再適用于 Mac Catalyst。?
Swift Packages 現在支持 DriverKit 作為平臺。
當您嘗試導入本地尚不可用的模塊時,Xcode 現在會建議您添加的集合中的包。
現在可以在 Add Packages 表中添加精選的包集合。
單元測試現在可以直接測試可執行目標。
Swift 重構
新的重構有助于遷移到異步代碼。“Convert Call to Async Alternative”可用于將完成處理程序作為最后一個參數的調用,并重構它們以使用新的異步語言功能,假設該函數的異步等效項已經存在。
現在可以將新的 Add Async Wrapper 重構操作應用于具有完成處理程序的函數。
測試
Source Editor 和 Test Navigator 具有 Run Test 操作的兩個新變體,它們無需構建即可運行測試選擇。
您現在可以使用 XCTPerformanceMeasurementPolarity 枚舉自定義如何將性能測試的自定義指標的測量值與設置的基線進行比較。
XCTest 現在能夠在受支持的 iOS 設備上的 UI 測試中合成指針交互。
Xcode 現在為在運行測試時崩潰的進程收集代碼覆蓋率數據。
性能 XCTests 現在支持測量應用程序啟動時的 CPU 使用率 (XCTCPUMetric)、磁盤寫入 (XCTStorageMetric) 和內存使用率 (XCTMemoryMetric)。?
xcodebuild 有一個新選項?-enablePerformanceTestsDiagnostics YES,用于收集性能 XCTest 的診斷信息。
現在在所有新創建的測試計劃中默認啟用測試超時。通過轉換方案創建的測試計劃需要手動啟用測試超時以保留現有行為。
用戶界面測試現在支持在 macOS 中使用 swipeUp、swipeDown、swipeLeft 和 swipeRight 系列方法。
性能測試現在支持在 macOS 中為動畫?os_signpost?間隔使用 XCTOSSignpostMetric 時收集故障指標。
XCTest 現在支持測試重復,且有三種測試重復模式。
新的透明屏幕覆蓋顯示自動化運行時的活動,并顯示描述如何停止自動化的文本。
在 macOS 中,或在具有密碼的設備上使用自動化時,您必須從管理員帳戶運行自動化,并且必須進行身份驗證以授權自動化。
XCTest 現在支持從 App Tracking Transparency 框架重置受保護資源“用戶跟蹤”的授權狀態。
用 Swift 編寫的測試方法可能會被標記為異步或異步拋出,以允許調用和等待來自異步 API 的結果,作為 Swift 并發語言功能的一部分。
XCTestCase 現在包含一個 addTeardownBlock 方法重載,其閉包參數是 async throws
xcodebuild 現在支持將某些環境變量傳遞給測試運行器進程。
XCTExpectFailure 函數現在包括用于自定義某些選項的 Swift 重載,而無需創建 XCTExpectedFailure.Options 實例
XCTest 現在能夠在 watchOS UI 測試中合成 Digital Crown 旋轉。
XCTest 現在包括 setUp 和 tearDown 實例方法的異步拋出重載
測試現在可以從任何線程調用 XCTestCase.expectation(description:)——以及其他返回 XCTestExpectation 的 XCTestCase API。這消除了之前測試從主線程調用這些 API 的要求,并允許使用它們的現有測試采用異步,而無需 @MainActor。
-End-
最近有一些小伙伴,讓我幫忙找一些?面試題?資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來,可以說是程序員面試必備!所有資料都整理到網盤了,歡迎下載!
點擊👆卡片,關注后回復【面試題】即可獲取
在看點這里好文分享給更多人↓↓
總結
以上是生活随笔為你收集整理的Xcode 13 正式版发布,来看看有什么新特性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php页面怎么改造mip,代码适配的网站
- 下一篇: dubbo源码分析第七篇一服务暴露第三小