Xcode 11 Beta 5

這一篇文章給你們介紹:Xcode 11 Beta 5,雖然是beta版本,可是在不久的未來必未來臨,例如:SwiftUI + Combinepython

概述

Xcode 11包括用於iOS 13macOS Catalina 10.15watchOS 6tvOS 13sdkXcode 11支持iOS 8及以上版本tvOS 9及以上版本watchOS 2及以上版本的設備上調試。Xcode 11要求Mac運行macOS Mojave 10.14.4或更高版本。這是版本要求ios

通用

新特性

注意:SwiftUI開發工具只能在macOS Catalina 10.15 beta版上運行。c++

  • 如今,您能夠獨立於系統外觀設置更改Xcode的外觀。(41165587)git

  • Xcode支持使用 xcodebuildxcrun altoolOrganizer window或命令行上傳應用程序。Xcode再也不包含Application Loader。(29008875)github

  • 如今,當啓動嵌入在 Xcode 中的 Instruments、模擬器和其餘開發工具時,macOS上的 LaunchServices會考慮所選擇的Xcode。例如,當您在Finder中雙擊一個Instruments trace時,將啓動所選XcodeInstruments版本。從命令行中更改XcodeXcode -select一塊兒使用的是哪一個Xcode。(6757601)chrome

  • 編輯器能夠添加到任何窗口,而不須要助理編輯器。編輯器是使用跳轉欄中的「Add Editor」 按鈕或File > New > Editor command添加的。如今,每一個編輯器均可以處於如下三種模式之一:「Editor Only」, 「Editor and Assistant」 或 「Editor and Canvas」。後兩種模式在可用時自動顯示相關內容。當使用多個編輯器時,View > Editor > Focus command可用於臨時展開活動編輯器,以填充整個窗口,隱藏其餘編輯器。對於源代碼控制支持,工具欄中的Code Review按鈕將替換Comparison Editor「Show Authors」命令如今能夠從Source Editor的編輯器菜單中得到。SCM日誌如今位於檢查器區域。(43806898)shell

已知問題

  • Xcode 11不支持在Mac Catalyst應用程序中使用SwiftUI

已解決的問題

  • 所需的軟件包安裝程序再也不沒必要要地出如今macOS 10.15上。(51080815)編程

  • Foundation繼承 Combine framework 如今能夠了!可使用如下FoundationGrand Central DispatchCombine進行集成:keyvalueobserverNotificationCenterRunLoopOperationQueueTimerURLSessionDispatchQueueJSONEncoderJSONDecoderPropertyListEncoderPropertyListDecoder和@Published屬性包裝器。(51241500)canvas

  • 當使用帶有暗黑系統外觀的淺色主題時,問題文本再也不是淺色的。(48230278)swift

Apple Clang Compiler

新特性

  • Clang 如今提供了一種機制來控制退出時析構函數註冊。您可使用 -fno-c++-static-destructors 標誌全局禁用這些函數,或者應用屬性[[clang::no_destroy]] 來禁用特定變量的析構函數。還添加了屬性[[clang:::always_destroy]],以便在使用 -fno-c++-static-destructors時啓用特定變量的析構函數。(21734598)

  • 做爲擴展,全部語言模式如今都支持具備固定底層類型的c++ 11枚舉。(43831380)

  • 當使用在活躍 Standard version 中被棄用的標準庫設施時,將發出棄用警告。(46881474)

  • 堆棧檢查在全部平臺上都是默認打開的,以防止內存損壞。(25859140)

  • 默認狀況下,機器碼outliner-Oz 下是打開的。它經過跨函數標識相同的代碼序列來減少代碼大小。這些序列被封裝在一個編譯器生成(「outlined」)的函數中。每一個原始代碼序列都替換爲對所述函數的調用。(46385499)

  • 爲了提升性能和安全性,靜態連接器(ld)如今將標記爲常量的全局變量移動到一個新的段中:__DATA_CONST。這些全局變量可能由編譯器生成的指針組成,動態連接器(dynamic linker, dyld)須要在加載期間修復這些指針,可是其餘方面是常量,好比vtables和顯式聲明的常量指針。一旦dyld完成加載映像,它就會使__DATA_CONST只讀。這種更改不會影響行爲良好的代碼,可是可能會破壞依賴於未定義行爲的代碼,好比使用類型雙關來編寫聲明爲const`的指針。(50898833)

static int value1 = 0;                  // Stored in __DATA
static int value2 = 0;                  // Stored in __DATA
const int * const valuePtr = &value1;   // Stored in __DATA_CONST

// ERROR: Attempting to store a value to a constant pointer
(int *)valuePtr = &value2;
複製代碼
  • Clang 如今支持用於 iOS 1三、macOS 10.1五、watchOS 6tvOS 13c++ 17 庫。(50988273)

已知問題

  • 當使用手動保留釋放時,可能不會捕捉到如下方法或它們傳遞調用的任何函數或方法拋出的異常: release、autorelease、retain、alloc或allocWithZone。(50253394)

已解決的問題

  • Xcodeif (@available(…)) 連接到運行在 iOS 1三、macOS 10.1五、watchOS 6或tvOS 13 上的應用程序或框架中時,if (@available(…)) 檢查能夠正常工做。(51109405)

  • 刪除 <experimental/optional><experimental/ variable > 標頭。使用c++ 17 中的 < optional >和< variant > 來替代。(50175894) 解決了優化器循環不變代碼運動傳遞中的長編譯時問題。(39648918)

Asset Catalog

新特性

  • 如今可使用菜單或鍵盤快捷鍵剪切、複製、粘貼和複製資產。(27107912)

已知問題

  • Localized assets 中的本地化資產與用戶首選的語言和地區不匹配。(49565973)

已解決的問題

  • 若是您按下 Command-U 或在 navigator區域中選擇一個 Localized assets,Xcode將再也不崩潰。(52211868)

  • 修正了在使用 Interface Builder 的圖像檢查器時,若是資產目錄包含一個符號和位圖圖像資產,而且它們具備相同的名稱,則可能發生崩潰的問題。(51279661)

  • 添加到資產目錄的新用戶定義圖像將顯示在圖像視圖圖像組合框中(51090225,51120715)

  • 修正了致使 Mac CatalystNSDataAsset 在運行時返回nil的問題。(50022757)

  • 解決了一個問題,當一個資產具備爲iPadMac Catalyst指定的變量時,會致使 NSDataAsset 查找返回錯誤的數據。(49990047,51278348,51288447)

Build System

新特性

  • 若是測試是使用測試計劃運行的,如今可使用測試計劃的代碼覆蓋率設置來配置哪些目標應該包括在代碼覆蓋率結果中。(50502861)

  • Xcode 默認狀況下使用響應文件將輸入文件傳遞給Swift編譯器。要關閉此行爲,請將 USE_SWIFT_RESPONSE_FILE 設置爲 NO

  • 您能夠在目標中使用無限數量的 Swift 文件。(35879960)

  • 運行腳本階段和自定義構建規則能夠聲明和發出依賴項文件,使用一些編譯器和構建工具使用的 makefile 樣式的 .d格式輸出。在肯定是否應該執行規則或階段時,構建系統將檢查列出的文件,以瞭解後續構建過程當中的更改。(49226986)

  • 項目如今可使用定製的構建規則來處理頭文件(APPLY_RULES_IN_COPY_HEADERS)。(48185100)

  • 自定義構建規則如今能夠指定在執行期間使用的附加靜態輸入文件。使用SCRIPT_INPUT_FILE_# 環境變量爲規則腳本提供這些已解析的輸入文件路徑。(49645853)

  • Xcode 從信息中刪除了一些條目。若是條目不適合爲其構建的平臺,則在構建時使用產品的 plist 文件,這對於配置爲爲多個平臺構建的目標很是有用。能夠經過將構建設置 DISABLE_INFOPLIST_PLATFORM_PROCESSING 設置爲 YES來禁用此行爲,在這種狀況下,目標必須承擔適當管理這些條目的責任。(47797497)

  • 自定義構建規則如今能夠聲明它們應該在每一個體繫結構中運行一次(默認狀況下),或者在全部體系結構中只運行一次。這對於與體系結構無關的自定義規則很是有用,例如,代碼生成工具生成的文件不會因體系結構而異。(47716990)

  • XCFramework 容許將適用於多個平臺(包括iOS設備、iOS模擬器和Mac Catalyst) 的二進制框架或庫打包到一個可分發的. XCFramework包中,開發人員能夠在本身的應用程序中使用這個包。能夠將.xcframework包添加到Xcode 目標的連接庫階段,而且Xcode在構建時使用所包含框架或庫的正確平臺版本。使用xcodebuild -create-xcframework命令行支持建立框架。捆綁在XCFramework中的框架或庫應該與發行版構建設置設置爲 YES 的構建庫一塊兒構建。(49948269)

已知問題

  • 增量構建可能沒法對項目的非源相關更改(如資源文件修改)進行正確的協同設計,這可能致使應用程序沒法啓動。(41254808) 解決方案 :在相同的目標中更改源文件以觸發 codesign 流程,或者執行一個乾淨的構建。

  • 爲Mac Catalyst更新iOS應用程序可能會顯示新的錯誤診斷,說明Mac上沒有某些框架或功能。若是其中一個診斷顯示錯誤,能夠經過將VALIDATE_WORKSPACE構建設置設置爲NO來禁用它。(50607174)

  • 新的構建系統不計算到用戶主目錄的構建設置路徑中的前導波浪號(~)。(41339901) 解決方法:使用 $(HOME)代替。

  • 若是目標啓用 RUN_CLANG_STATIC_ANALYZER,那麼單個文件處理命令(如Compile、Preprocess、Show Assembly)將不能正確工做,由於它們生成靜態分析器輸出文件,而不是適當的輸出。(43340227) 解決方法:在目標中禁用RUN_CLANG_STATIC_ANALYZER

  • 若是應用程序承載的測試目標的構建(其中定義了TEST_HOST)失敗,那麼後續的構建可能會在簽署應用程序產品時失敗,由於在應用程序的初始簽名時,測試目標是不完整的,而且是未簽名的。(43402096) 解決方法 :執行一個乾淨的構建。或者,從app target的產品中手動刪除未簽名的測試包並從新構建。

  • 覆蓋iOS架構和有效架構構建設置的目標可能須要刪除或限制覆蓋,以便正確地爲Mac Catalyst構建。(51074742)

  • 當在macOS 10.15上使用Xcode時,一些文件——特別是.xib文件和storyboard文件——可能會被複制而不是編譯,從而致使不正確的構建產品。(49351105) 解決方法:在正在複製的文件的文件檢查器中,將類型彈出框從默認值切換到,而後返回默認值。這將重置項目文件中的文件類型爲正確的類型,並使構建系統可以將其匹配到正確的工具來處理它。

  • 當用戶第一次構建時,可能會出現一個彈出窗口,說明SimulatorTrampoline但願訪問桌面文件,由於運行在simulator中的ibtool須要訪問這些文件來編譯故事板。(51114450) 解決方案:容許在提示符中訪問文件。

已解決的問題

  • 當使用 Xcode Server 中的測試計劃在多個配置下運行測試時,集成報告如今能夠正確地顯示測試所運行的每一個配置的名稱。(53402104)

  • 若是更改活動測試計劃文檔在test navigator是可見的,如添加或刪除一個測試目標,或啓用或禁用一個單獨的測試或測試類——navigator如今更新當即響應的變化而變得不一樣步測試計劃。(52065983)

  • 若是修改了活動測試計劃文檔中的設置,而且隨後調用test Again操做來從新運行上次運行的測試,那麼修改後的設置如今將生效,而不是使用先前的設置。(51145300)

  • macOS如今支持按需資源(ODR)。(50358184)

  • 使用遺留的構建系統特性,如構建規則或腳本階段發現的依賴文件、定製構建規則的輸入聲明,或APPLY_RULES_IN_COPY_HEADERS構建設置,將生成一個錯誤,而不是無聲地被忽略。(51318274)

  • Watch目標中,將架構構建設置覆蓋爲僅僅armv7k並不會阻止部署到TestFlightXcode的企業分發工做流。(51104990)

  • 索引器不會在索引Swift響應文件以前等待執行構建。(52110336)

  • 在關閉和從新打開一個項目以後,或者在使用xcodebuild執行增量構建時,來自先前構建的關於不兼容框架、應用程序擴展和代碼簽名設置的診斷信息如今會在問題導航器和構建日誌中顯示。(51131884)

  • 默認狀況下,Xcode的新構建系統不會檢測做爲shell腳本構建階段輸入聲明的目錄中的更改。啓用構建設置allow_recursive_script_input會致使它這樣作。可是,若是目錄中的任何文件是由依賴於腳本階段輸出的任務生成的,則會發出

  • 依賴循環錯誤,必須經過重組目標來解決。(41126633)

  • 當構建一些使用隨需應變資源的目標時,構建系統再也不崩潰。(49072702)

Command Line Tools

已解決的問題

  • python3pip3命令再也不錯誤地失敗,再也不出現聲稱只安裝命令行工具時須要Xcode的錯誤。(53284703)

  • 當使用macOS Catalina 10.15 beta 4時,可使用默認的shell路徑使用pip3。(50877974)

  • Python 3在命令行工具包中可用。(51727440)

  • Xcode的內置usdz_converter工具已被棄用,將被刪除。使用加強現實資源下的更新工具套件Augmented Reality。(52922369)

Core Data

新特性

  • 如今有一個複選框,使您可以區分string屬性的默認值是nil仍是空字符串。設置時,若是沒有指定其餘默認值,則默認值爲空字符串。(26534406)

  • Xcode 11數據模型文件格式再也不爲實體或屬性寫出或保存已廢棄的同步服務信息。(32524648)

  • Core Data數據模型編輯器在使用Xcode 11數據模型文件格式和適當的部署目標時,添加了對派生屬性的支持。(45567066)

  • 當使用Core Data建立應用程序時,會出現一個新的複選框來啓用CloudKit對數據模型默認配置的支持。對於使用新的配置檢查器的現有數據模型,也能夠啓用此功能。當數據模型配置支持CloudKit時,數據模型編輯器執行額外的驗證,以確保模型符合Core data CloudKit支持的需求。(51126024)

已解決的問題

  • CloudKit一塊兒使用時,Core Data模型中的屬性必須是可選的,或者具備默認值。Xcode 11 beta 3和更早版本錯誤地要求這樣的屬性是可選的,而且具備默認值。(51593507)

  • 若是使用UUID屬性類型、URI屬性類型或持久性歷史記錄特性,在使用Xcode 9中使用的格式以前的數據模型文件格式時,將正確地生成錯誤。(50188371)

Create ML

新特性

  • Create ML中提供了活動分類、表格分類和單詞標記模板。

  • Create ML中提供了對象檢測和文本分類模板,加入了圖像分類和聲音分類模板。從macOS 10.15 beta 3開始使用這些模板。(52009035)

  • 您如今可使用聲音分類預覽直接從麥克風對聲音進行分類。(52131594)

已知問題

  • Live listen在沒有麥克風的設備上崩潰。(53405469)
  • 聲音分類器中的進度圖可能沒法正確更新。(52911042)

Debugging

新特性

  • 視圖調試器如今在檢查器中顯示NSImage 實例的名稱。(35516797)

  • 用於調試視圖層次結構的Size檢查器中的圖形篩選器標識所選視圖上的哪些屬性受到約束。在篩選器中選擇屬性將顯示的約束縮小到與該屬性匹配的約束。標準修飾符鍵(如Shift和Command)可用於展開顯示匹配這些屬性的約束的組合的選擇。(44864394)

  • 如今能夠調試watchOS應用程序的視圖層次結構。(45173634)

  • 如今,您能夠從設備和模擬器窗口模擬鏈接設備的網絡條件和熱狀態。(44608479)

  • 視圖調試器在調試導航器和畫布中顯示UIWindowScene 實例。(45378799) 能夠在scheme選項中禁用視圖調試。(45928299)

  • 用於調試視圖層次結構的大小檢查器有關於約束的更多細節,包括過濾器、編輯器中的懸停高亮顯示和更好的描述。(16153188)

  • 視圖調試器支持調試Mac Catalyst應用程序。(37507479)

  • 視圖調試器檢查器顯示 NSImageViewNSButtoncontentTintColor 。(49506123) for

  • 視圖調試器如今顯示iOS命名的名稱和系統顏色。(45162028)

  • 視圖調試器顯示特徵集合信息。(45161975)

  • 視圖調試器顯示UIImage 實例的名稱。(45327089)

  • 視圖調試器如今顯示符號信息,如基線和中線。(49508874)

  • 調試欄外觀切換器支持在iOS上在暗模式和亮模式之間切換。(45161907)

  • Scheme編輯器的Diagnostics選項卡中的「暫停問題」複選框被常規斷點替換。可使用斷點導航器建立運行時問題斷點。(31409112)

  • 使用環境覆蓋(可從調試欄訪問)覆蓋已調試流程的外觀、動態類型和可訪問性選項等系統設置。(45848655)

  • 調試器支持使用崩潰日誌(。崩潰文件)。(48408310)

  • 調試器能夠調試tvOS的頂層擴展。(48869701)

  • 在安裝或調試應用程序時,Xcode更喜歡使用Wi-Fi鏈接手錶。 斷點的VoiceOver操做菜單包含一個跳轉到相應代碼行的操做。(44941178)

  • 在調試帶有約束的視圖時,雙擊size檢查器中的約束將在編輯器中選擇該約束,並在檢查器中顯示約束的信息。(18842905)

已知問題

  • watchOS 6中,APNs請求頭中須要一個APNs -push-type鍵。爲正在發送的通知類型指定警告或背景。Xcode中的模板APNs文件默認狀況下不包含這個頭文件。(50709418)

  • 調試符號可能沒法用於Apple Watch。(26995636) 解決方案:驗證您有一個工做的互聯網鏈接,並在首選項>賬戶中登陸到您的蘋果ID。

  • watchOS模擬器中調試手錶應用程序可能會在模擬器首次啓動時失敗。(50263836) 解決方法:等待手錶模擬器完成引導,而後再次開始調試。

  • App和熱狀態跟蹤的能量衝擊儀可能會中止更新。(50968828) 解決方法:中止並從新運行應用程序。

已解決的問題

  • 修正了當在調試導航器中拖動進程項時,macOS 10.15上的Xcode崩潰。(48453949)

  • 您能夠調試設備上的交互式預覽。(51183159)

  • 當使用運行當前beta操做系統發行版的設備時,能量報告顯示設備的熱狀態。(52349364)

  • 調試可用於設備上的預覽。(47668840,51139546)

  • Environment override按鈕出如今調試欄中,用於watchOSiOS應用程序擴展目標,而不須要先暫停進程。(51203640)

  • 預覽調試會話再也不在預覽不可見時結束。(50593619)

  • 添加到正在運行的進程中的運行時問題斷點行爲正確。(49433870)

  • 視圖調試器中的項能夠在上下文菜單的Debug導航器中顯示。(18598643)

  • 在調試視圖層次結構時改進了Swift類名的格式。(39679411)

  • 修正了調試控制檯將顯示頁面列指南的問題。(49693398)

  • 斷點支持VoiceOver命令來打開快捷菜單。 (44940944)

  • WatchKit 框架再也不包含在 iOS SDK中。若是您正在使用來自iOSWatchKit api,則須要刪除此使用。WatchKit框架仍然能夠在watchOS上使用。若是您正在使用來自iOS的WatchKit api來推斷配對的Apple Watch的功能可用性,那麼在向Feedback Assistant. 提交反饋時,請包含關於您的用例的信息。(49707950)

  • 爲了與遺留軟件兼容,macOS中包含了Python、Ruby和Perl等腳本語言運行時。在macOS的將來版本中,腳本語言運行時在默認狀況下不可用,可能須要安裝一個附加包。若是您的軟件依賴於腳本語言,建議您將運行時捆綁在應用程序中。

  • 不推薦使用Python 2.7。這個版本包含在macOS中,以便與遺留軟件兼容。macOS 的將來版本將不包括Python 2.7。相反,建議您在終端中運行python3。(51097165)

  • Quartz Composer框架不受歡迎。從macOS 10.15開始,Quartz Composer框架將被標記爲不同意使用,而且爲了兼容性的目的仍然保留。若是您的應用程序使用的是Quartz Composer,那麼能夠過渡到Core Image、SceneKit或Metal等框架。(50911608)

  • 命令行工具對Subversion的支持——包括svn、git-svn和相關命令——再也不由Xcode提供。若是須要Subversion或相關的命令行工具,能夠經過運行xcode-select——install來安裝命令行工具包。(50266910)

Devices

已知問題

  • 當同時運行到多個目的地時,使用xcodebuild進行測試可能會致使崩潰。(52962341) 解決方案:經過將 - Disable -concurrent-destination-test 標誌傳遞給xcodebuild來禁用併發目標測試。

  • 使用xcodebuild中的設備或模擬器名稱指定運行目的地不能正確解析。(52081230) 解決方案:根據平臺和 ID 而不是名稱指定目的地。

  • 在設備上構建並運行 watchOS應用程序 可能會無限期地顯示系統轉輪。(51726238) 解決方法:從新啓動設備。

已解決的問題

  • 解決了一個問題,阻止運行一個手錶應用程序與線程殺菌劑創建啓用在舊版本的watchOS。(49288795)

  • 解決了在視網膜和非視網膜顯示器之間切換致使的半點幀差別問題。(20175879)

DriverKit

已解決的問題

  • DriverKit 驅動程序構建正確。(52858797)

Instruments

新特性

  • 儀器中的軌跡如今能夠在層次結構中造成。它們如今能夠表示任何工程類型,並使用定製的工具建立。(28615789)

  • 如今,Instruments容許一次從表中複製多行。(39326522)

  • 工具容許建立範圍,以便在跟蹤文檔中更容易地導航。(49022012)

  • <os-signpost-point-schema>在定製工具中可用來匹配來自os_signpost(_:dso:log:name:signpostID:)的點事件。(50586708)

已知問題

  • 當分析一個獨立的 watchOS應用程序 時,會啓動一個 iOS模擬器。(49788679)

已解決的問題

  • 所選軌跡在儀器的觸摸欄區域中呈現。(50186374)

  • 在運行iOS、iPadOS、watchOS或tvOS的設備上進行概要分析時,Instruments對從其接收的os_log(:dso:log:::)os_signpost(:dso:log:name:signpostID:)消息使用正確的類別。感興趣的點如今能夠正確地接收事件,而且自定義工具類別匹配的行爲也正確。(52193505)

Interface Builder

新特性

  • 界面生成器支持ios13 UIVisualEffectView 模糊和動態視覺效果。(48023286)

  • 界面生成器支持ios13 UIActivityIndicatorView樣式。(48573772)

  • iOS家庭顯示器的顏色如今適應於淺色和深色畫布的外觀。(48610782)

  • 接口生成器支持自定義 UIButton 符號配置。(51323174)

  • 界面生成器支持新的佈局 TVCollectionViewFullScreenLayout 在蘋果電視上。(47598895)

  • UIViewController 實例如今默認爲自動模式表示模式。模態表示segue能夠覆蓋此設置。(48129590)

  • 界面生成器支持iOS上的暗模式。(45314199)

  • Interface Builder的設備欄可讓你在iOS應用程序的亮暗界面之間切換。(45282451)

  • 您能夠添加SwiftUI宿主控制器,例如 UIHostingController,來將storyboard 控制器流鏈接到管理 SwiftUI 視圖層次結構的宿主控制器。您能夠在Interface Builder中填充宿主控制器的內容,方法是提供一個經過編程設置控制器的rootView的自定義子類。(46039344)

  • 你也可使用 Segue 動做設置 UIHostingControllerNSHostingController 的根視圖。

  • 對象庫如今匹配所選的系統範圍外觀。(50874168)

  • NSStackView 檢查器如今容許配置負間距。(49012055)

  • NSSwitchmacOS 10.15 上運行時可用。(47566686)

  • UITableView 中的單元格如今能夠經過畫布中的自動佈局約束視圖自調整大小。若要爲現有表視圖選擇行爲,請在大小檢查器中爲表視圖估計的項大小啓用「自動」,併爲單元格的高度啓用「自動」。(35735970)

  • NSViewUIView 在尺寸檢查器中有一個佈局模式選項,能夠顯式地選擇「將自動調整蒙版轉換爲約束」。默認設置爲 「Automatic」 ,這是現有的行爲。「自動」意味着當視圖受 storyboard或.xib 文件中的約束影響時,「將自動調整蒙版轉換爲約束」將關閉,若是不受約束則打開。(37352354)

  • 提升了「添加缺失約束」自動佈局約束生成的可靠性。(43694622)

  • UIScrollView 的內容在畫布中是可滾動的,一旦它的子視圖被自動佈局約束徹底約束。(44727961)

  • UICollectionView 中的單元格如今能夠經過畫布中的自動佈局約束視圖自調整大小。若要爲現有集合視圖選擇行爲,請在大小檢查器中爲集合視圖的估計大小啓用「自動」,併爲單元格的大小啓用「自動」. 若是部署在 iOS 13 以前,你能夠激活自我分級集合視圖細胞經過調用 performBatchUpdates(_:completion:) viewDidLoad()。(45617083)

  • 在字體彈出窗口檢查器中,家庭彈出窗口如今呈現菜單項做爲適用字體的預覽。(31484154)

  • 如今能夠在文檔範圍內對錯位的幀執行更新幀,而不須要選擇視圖。(22076710)

  • UIScrollView 支持內容和框架佈局指南,能夠在Size檢查器中啓用它們,以便對可滾動內容進行更多控制。(29711618)

  • 界面建設者支持新的蘋果電視標籤欄風格。(47598643)

  • 新的 WKInterfaceTextField 接口元素可用於watchOS。(45754186)

  • canvas 支持爲 Mac Catalyst 應用程序定製界面。(37797710)

  • SF 符號在圖像檢查器屬性中可用。(47532055)

  • UIImageView 檢查器包括對配置符號的支持。(47797500)

  • 使用帶有新的 @IBSegueAction 屬性註解的視圖控制器方法,可使用帶有任何所需值的自定義初始化器,在代碼中建立 segue 的目標視圖控制器。這使得在故事板中使用具備非可選初始化需求的視圖控制器成爲可能。在源視圖控制器上建立從 segue到@IBSegueAction 方法的鏈接。在支持 Segue 操做的新OS版本上,將調用該方法,它返回的值將是傳遞給 prepare(for:sender:)Segue 對象的destinationViewController。能夠在一個源視圖控制器上定義多個 @IBSegueAction 方法,這能夠減小在prepare(for:sender:)中檢查 segue 標識符字符串的須要。(47091566)

  • IBSegueAction方法最多接受三個參數:編碼器、發送器和segue的標識符。須要第一個參數,若是須要,能夠從方法的簽名中省略其餘參數。必須將 NSCoder 傳遞到目標視圖控制器的初始化器,以確保它是用 storyboard 中配置的值定製的。該方法返回一個視圖控制器,該視圖控制器匹配故事板中定義的目標控制器類型,或nil,以使用標準init(coder:)方法初始化目標控制器。若是您知道不須要返回nil,則返回類型能夠是非可選的。

在Swift中,添加@IBSegueAction屬性:

@IBSegueAction
func makeDogController(coder: NSCoder, sender: Any?, segueIdentifier: String?) -> ViewController? {
    PetController(
        coder: coder,
        petName:  self.selectedPetName, type: .dog
    )
}
複製代碼

在Objective-C中,在返回類型前添加IBSegueAction:

- (IBSegueAction ViewController *)makeDogController:(NSCoder *)coder
               sender:(id)sender
      segueIdentifier:(NSString *)segueIdentifier
{
   return [PetController initWithCoder:coder
                               petName:self.selectedPetName
                                  type:@"dog"];
}
複製代碼

已知問題

  • 當在設備欄中選擇 Mac設備 查看 iPad 故事板 時,項目添加的自定義字體不會呈現。(48528374)

  • 若是一個字形有光明模式和黑暗模式表示,黑暗模式表示將不會出如今故事板中。(50354204)

  • Interface Builder 中配置的 UIKit菜單macOS上運行時可用,但在iOS上不可用。(51077651)

  • 蘋果電視故事板中的 ARView 對象會致使界面生成器渲染崩潰。(50971800)

  • iOS狀態欄 不會顯示在界面構建器畫布中。(48639919)

  • 包含用 Xcode 11 建立的菜單命令的視圖控制器場景會致使應用程序在iOS 12上運行時崩潰。(50871098)

  • Interface Builder中,將對齊設置爲「center」或「right」的UILabel ,  UITextField ,  UITextView 實例在爲macOS設計或運行時對齊錯誤。(50062524) 解決方法:在 awakeFromNib() 中從新應用所需的對齊。

  • Xcode 11 beta版 以前使用 Xcode版本 建立的項目在 Xcode 11 beta版 中打開時保留默認的自定義顏色。(50828300)

已解決的問題

  • 使用 Xcode 11 建立的 iOS或tvOS模板 項目中的故事板和 .xib文件如今能夠在之前的 Xcode版本 中打開。(51230799)

  • 使用 Xcode 11 建立的包含第四系填充顏色、第二系填充顏色、第三系填充顏色或系統填充顏色的故事板和 .xib文件 能夠在較舊的 Xcode版本 上打開,而不會致使崩潰。(51233884,51236844)

  • 修正了集合視圖單元格自調整大小的佈局問題,這些問題來自於故事板和 .xib文件,當編譯和部署到 iOS 12.4及之後版本時(49537998)

  • 解決了在查看 Mac Catalyst 應用程序的 storyboard 時,阻止界面構建器設備欄中的亮或暗界面樣式組生效的問題。(50929581)

  • Xcode 在打開 .xib 文件或帶有自定義視圖的故事板文件時不會崩潰,若是該項目包含Swift包,該視圖被標記爲IBDesignable。(50551974)

  • 拖出一個新的 iOS 主菜單再也不會致使崩潰,若是你在畫布上拖動一個現有的菜單。(51237295)

  • 解決了與打開故事板和 .xib文件 相關的性能退化問題。(51282755)

  • UIDatePicker 的檢查器如今只顯示適用於所選模式的屬性。(26726319)

  • 用於添加 iOS設備 的預覽編輯器菜單如今與當前畫布方向匹配。(48818470)

  • 預覽編輯器項如今保存配置的區域設置或僞區域設置。(48303753)

  • 在接口生成器中配置爲 Count Down的UIDatePicker對象如今在運行時使用指定的持續時間。(23426425)

  • 在不使用自動佈局的文檔中也能夠看到Embed In bar按鈕。(46855203)

  • NSControl 的子類如今在庫和文檔大綱中有惟一的圖標。(24231920)

Library

已知問題

  • 修正了從庫中拖動子視圖控制器時背景顏色不正確的問題。(50388578)

  • 庫中的全部 UI控件 都正確切換到暗模式。(49830961)

Linking

已解決的問題

  • 目標包含 Swift 代碼,啓用位碼構建設置設置爲 Yes ,在使用存檔操做構建時正確連接。(52804818)

LLDB

新特性

  • LLDBPython腳本 如今基於 Python 3。若是您使用的 Python擴展python3不兼容 ,它們就會崩潰。爲了幫助轉換,您能夠在 python2 模式下運行,方法是設置一個默認值:
defaults write com.apple.dt.lldb DefaultPythonVersion 2
複製代碼
  • Python 2支持將在將來被移除。(47806994)

  • Swift Decimal 值在 LLDB 中有一個數據格式化程序,使它們以可讀的方式顯示。(38983073)

  • LLDB 如今支持檢查經過支持庫演化而編譯的 Swift 類型。(48018240)

已解決的問題

  • 在Swift代碼中從新聲明 self 能夠與 LLDB 正常工做。(39611934)

  • PATH 中的 python二進制 文件不是系統二進制文件時,Swift REPL和LLDB

  • python 腳本能夠正常工做。(40961425)

  • 解決了在調試 XCTest 測試時阻止 LLDB 訪問變量的多個問題。(41471338)

Localization

新特性

  • 您如今能夠在資產目錄中本地化資產。在屬性檢查器中啓用本地化。(12948139)

  • 設置包如今包含在 Xcode 本地化目錄中。(12495197)

  • genstring 的手冊頁提供了更詳細的行爲文檔。(19709369)

  • genstrings 工具獲得了加強,並與 extractLocStrings 工具合併。之前的版本已被棄用,已重命名爲 ogenstring ,如今必須使用 xcrun 調用。應該將調用 xcrun extractlocstring 的任何腳本更改成使用 genstring,可是目前提供了一個兼容符號連接來調用 genstring。(19709395)

  • genstrings工具如今接受一個 -encoding 參數,該參數容許指定輸入文件的文件編碼。(48224455)

  • 更新版本的 genstring 改進了錯誤報告,而且能夠在之前默認接受的場景中報告錯誤。例如,若是 MyApp 目錄包含子目錄,genstrings MyApp/* 將失敗,由於 genstrings 文件參數必須是源文件。(48304658)

  • genstrings工具如今可使用任意數量的 -s 參數來指定與 NSLocalizedString 相似的附加宏,或者用於提取字符串的函數。例如,genstrings -s MyErrorSring -s MyUIString myfile.swiftMyErrorStringMyUIString 都視爲等同於NSLocalizedString。(48734596)

請注意: 使用-s參數並不會禁止對 NSLocalizedStringCFCopyLocalizedString 的支持。

  • 本地化命令和 genstrings工具的導出如今支持多行 SwiftObjective-C 字符串,而且在識別 NSLocalizedString 參數時放寬了空格要求。(50516442)

  • 本地化命令的導出性能獲得了很大的改進。(40548416)

已解決的問題

  • 本地化命令和 genstrings 工具的導出再也不在轉義的高 Unicode 代碼點 (好比\U0001F603) 上崩潰。(18898240)

  • 導入包含內嵌換行的本地化字符串如今會生成帶轉義 \n序列 的字符串文件。(44649979)

  • Xcode 本地化導出生成的 XLIFF文件 如今將 xml:space="preserve" 添加到 <trans-unit /> 元素中,以確保保留空白。(44928807)

Mac Catalyst

已知問題

  • Mac Catalystcolor asset 變量不會在運行時傳遞。(51113192)

  • Mac CatalystNSDataAsset 變量在運行時返回 nil。(50022757)

Organizer

新特性

  • 新的 Metrics organizer 顯示電池壽命和性能分析爲您的應用程序,以幫助您推進優化。
  • 當您的應用程序在app Store上發佈時,以及在足夠的字段使用以後,將報告您的應用程序的指標。
  • 可用的指標包括電池消耗、啓動時間、掛起速率、內存和磁盤寫操做。
  • 您能夠根據設備和使用特性篩選數據。(43028903)

Playgrounds

新特性

  • Xcode 11 beta 版中不支持 SwiftUI live 視圖和操場中的內聯結果。(42226387)

  • 工做區中的操場不能從 Swift 包導入目標。(47668990)

  • UIKit 中視圖的快速查看和內聯結果預覽能夠顯示爲空白矩形。(50787870)

已解決的問題

  • 操場的前幾行再也不被卡在窗戶下面。(47529397)

  • 修正了在 macOS 10.15 上運行遊樂場時,因爲網速慢或不可靠而致使的延遲。(48995467)

  • 若是代碼引用主線程之外的視圖,遊樂場將再也不崩潰。(46579594)

Project Navigator

新特性

  • Xcode 可使用 find 導航器在工做區或項目中找到資產。資產目錄編輯器還支持查找和替換,您可使用 replace 重命名資產。(14279237)

Reality Composer

新特性

  • 增長了對AR場景中對象錨的支持。(48774003)

已知問題

  • 由先前發佈的 Reality ComposerXcode beta 版本建立的現實文件再也不受支持。(53180175) 解決方案:使用最新版本的 Reality ComposerXcode 從新導出現實文件。

  • macOS 上的 Reality Composer 的內容庫中添加的對象與 iOS和iPadOS 上的Reality Composerbuild 1A68 不兼容。

  • 若是在接口生成器中沒有指定它的模塊,則在運行時加載故事板時不會找到 RealityKit ARView 類。在 Xcode 控制檯中顯示如下錯誤消息:「Interface Builder文件中的未知類ARView」。」(50840767) 解決方案:ARView是一個Swift視圖類,須要在接口構建器檢查器中指定它的類名 (ARView) 和模塊 (RealityKit)

  • 若是在 Xcode 項目中沒有使用 RealityKit,則在運行時加載 storyboard 時不會找到 RealityKitARView 類。在Xcode控制檯顯示如下錯誤消息:「 Interface Builder 文件中的未知類 _TtC10RealityKit6ARView。」(50900969) 解決方案:若是導入 RealityKit 並使用 ARView類型定義 @IBOutlet,但在項目中不要使用 RealityKit 符號,則會出現此問題。要確保 RealityKit 在運行時使用此配置加載,請手動將 RealityKit 添加到目標的 Link二進制文件和庫構建階段。

已解決的問題

  • 改進了對導入的 USDZ 文件的支持。(49630946)

  • 改進了對操做對象的支持。(50036512)

  • 來自其餘場景的通知觸發器和通知操做將再也不出如今沒有建立它們的場景中。(51008577)

  • Xcode 從一個 Reality Composer 項目自動生成的 . Reality 文件包含項目中的全部場景。(51048599,51868814)

  • RealityKit 在iOS模擬器中可用。(48603396)

Server

已知問題

  • 當編輯使用SSH進行身份驗證的項目的bot時,Xcode Server可能會禁用一些特定於項目的設置。(51009722) 解決方案:在編輯bot時,要麼替換 repository 選項卡中的 repository,要麼使用基於 http 的身份驗證和 Xcode 服務器集成。

  • 當從任何集成的上下文菜單建立機器人時,Xcode Server均可能致使崩潰。(51082255) 解決方法:從服務器的上下文菜單或 Xcode 中的產品菜單建立機器人。

  • 由多個目標構建的源文件中出現的構建問題能夠在每次集成中標記爲已解決並從新引入。(46523551)

已解決的問題

  • Xcode Server 如今支持Mac Catalyst應用。(50602873)

  • Swift包始終出如今 Xcode Server bot 配置存儲庫窗格中。(50058808)

  • 解決了Xcode Server 沒法自動簽署使用iCloud、應用程序組、Apple Pay或錢包功能的項目的問題。(41008156,44704694)

Signing and Distribution

新特性

  • Xcode 11 beta 4 支持新的maccatalyst。包標識符前綴。所以,Mac Catalyst 應用程序使用的配置文件必須從新生成,以反映新的前綴。若是使用自動簽名,將自動生成一個新的配置配置文件。若是您正在使用手動簽名,請登陸到開發人員賬戶並從新生成 Mac Catalyst 應用程序使用的配置文件。(52535178)

  • 若是您正在使用之前的 Xcode 11 beta版 ,而且已經爲您的應用程序提供了配置文件,那麼它將繼續工做,直到您更新到 Xcode 11 beta 4 。若是您尚未爲您的應用程序提供配置文件,您須要更新到 Xcode 11 beta 4 ,以便生成一個具備正確應用程序ID前綴的配置文件。

  • 若是代碼包含對 bundle標識符 的引用,則須要更新這些引用。

  • 簽名和功能設置如今合併在項目編輯器中的新簽名和功能選項卡中。新選項卡支持跨多個構建配置使用不一樣的應用程序功能。新的功能庫使搜索可用功能成爲可能。(35254597)

  • Xcode 11 支持新的 Apple 開發和 Apple 分發證書類型。這些證書支持在任何蘋果平臺上構建、運行和分發應用程序。現有的iOS和macOS開發和分發證書將繼續工做,可是,在 Xcode 11 中建立的新證書將使用新類型。之前版本的 Xcode 不支持這些證書。(45527608)

已知問題

  • 若是你的iPad應用程序使用了私有權限,那麼 Mac Catalyst 應用程序可能沒法使用這些權限。 解決方案:爲 Mac Catalyst 應用程序生成一個新的受權文件,並按照如下步驟排除不可用的受權:

      1. 在項目導航器中選擇應享權利文件,而後選擇 File > Duplicate
      1. 給你的 Mac Catalyst 受權文件一個惟一的名稱並保存它。
    • 3.重新的 Mac Catalyst 權限文件中刪除任何不可用的私有權限。

      1. 在項目編輯器中導航到 Mac Catalyst 應用程序的構建設置,並找到代碼簽名權限構建設置。
      1. 展開構建設置,以便您能夠查看全部構建配置的值。對於每一個構建配置,單擊 plus(+) 按鈕添加條件設置。
      1. 從每一個條件設置中的彈出按鈕中,選擇任何 macOS ,而後編輯條件設置的值,以引用新的 Mac Catalyst 受權文件的名稱。
  • 在建立開發證書時,自動簽名可能會失敗,並出現「出於安全緣由禁止此請求」的錯誤。(50964225) 解決方法:您的賬戶可能已經達到了證書限制。在Safari中查看您的 Apple Developer 賬戶,並撤銷您沒有使用的任何開發證書,而後在 Xcode 中再次嘗試。

  • 存檔操做不會對Swift包中的命令行可執行產品進行代碼簽名。(48717735) 解決方法:在發佈存檔的可執行文件以前,使用 codesign 工具手動簽署它們。

  • 使用 bot 編輯器的 sign 選項卡手動安裝的 Mac 配置文件將使用錯誤的文件擴展名安裝,這會致使集成失敗。(47636041) 解決方法:登陸到bot用戶的賬戶,並在 ~/Library/MobileDevice/Provisioning profiles 目錄中重命名受影響的概要文件。

已解決的問題

  • 修正了一個致使應用內購買內容包沒法構建的代碼簽名問題。(50736776)

  • 解決了 Xcode 在爲 iOS Developer University 程序的成員建立新的簽名證書時拋出錯誤的問題。(50640287)

  • 解決了 Xcode 錯誤報告的一個問題:當上傳到 App Store 時,「團隊沒有iTunes鏈接訪問」。(39292849)

Simulator

新特性

  • 模擬器能夠根據當前電源自動選擇 macOS GPU。當你的 Mac 鏈接到 AC電源 時,使用的是 分立GPU。當你的Mac使用電池供電時,使用的是集成GPU。您能夠經過導航到 File > GPU 選擇在模擬器中更改策略。(53032365)

  • simctl 如今能夠覆蓋 iOS設備 的狀態欄值。例如,要設置時間和電池,請使用:

xcrun simctl status_bar <device> override --time "9:41" --batteryState charged --batteryLevel 100
複製代碼

有關所有選項,請參見xcrun simctl help status_bar。(51697821)

  • 當運行在 macOS 10.15上時,Metal 能夠在 iOS 13和tvOS 13模擬器 中使用。Metal 代碼在主機 Mac GPU 上執行,比模擬的 OpenGL代碼 要快得多。SceneKit api, CoreAnimation其餘系統框架抽象gpu 之間的許多差別,減小須要特定於設備的代碼。當運行在早期版本的 macOS 上或在沒有Metal 的環境中,模擬器將繼續使用呈現的 OpenGL 軟件。若是你的 Mac 有多個 GPU ,使用模擬器中的文件菜單來選擇使用哪一個 GPU。若是正在使用的 GPU 變得不可用,任何使用它的模擬器都會自動關閉。(18430676)

  • 默認狀況下,Xcode 再也不建立全部可用的 iOS模擬器設備。而是建立一組最經常使用的設備。要建立其餘設備(或一個設備的多個實例),請打開設備窗口,選擇模擬器,單擊+按鈕,輸入一個名稱,並選擇相關的設備類型和OS版本。(49428617)

  • CAMetalLayer 能夠在 iOS 13和tvOS 13模擬器 中使用。(45101325)

  • iOS 1三、watchOS 6和tvOS 13模擬器 如今都有一個 dyld共享緩存。這改進了模擬器的啓動時間,減小了模擬器進程使用的打開文件句柄的數量。若是您報告了一個您認爲與共享緩存相關的問題,請包括一個 simctl診斷和使用 DYLD_PRINT_LIBRARIES=1 啓動程序的輸出。(13632739)

  • simctl 如今接受運行時名稱的簡短別名。這意味着你能夠用像 simctl create 'iPhone X' iOS13 這樣的命令建立一個新的iPhone X模擬器。(41089607)

  • 對於 headlesscontinuous integration 場景,您能夠配置 CoreSimulator,經過設置默認的 write com.apple 來跳過虛擬幀緩衝區中的合成操做。CoreSimulator FramebufferServerRendererPolicy to none。在這種模式下,沒法查看模擬器,simctl io 也沒法截屏或錄製視頻。(48264341)

  • 沒有 CFBundleVersion 的包是無效的,不能正確地安裝在設備或模擬器上。 CoreSimulator 如今能夠在流程的早期檢查和拒絕這些包,並提供更清晰的錯誤消息。(49892531)

  • 模擬器停靠圖標如今包括一個菜單,以快速啓動模擬器。(43067512)

  • 模擬器的文件菜單如今包括一個 GPU 選擇菜單,以控制哪一個 GPU 是使用金屬支持模擬器和合成模擬器的虛擬幀緩衝區。若是在選中可用項時使用外部 GPU ,則在外部GPU鏈接後啓動的任何模擬器都使用外部 GPU 。若是外部 GPU 斷開鏈接,任何使用它的模擬器都會自動關閉。對這些設置的更改僅在模擬器啓動時生效。當這個設置被改變時,模擬器已經啓動,繼續使用以前選擇的 GPU,直到它們從新啓動。(46134036)

  • 遊戲控制器輸入在iOS模擬器中可用。(50082777)

已知問題

  • 模擬器不分配負載,若是多個 GPU 在一個系統匹配選擇的GPU策略。只使用MTLCopyAllDevices() 返回的第一個匹配的GPU。(50608554) 解決方案:經過將模擬器窗口定位在與模擬器使用的 GPU 直接鏈接的顯示器上,您可能會看到更高的性能,這避免了跨 GPU複製

請注意:與任何利用 GPU 的應用程序同樣,外部鏈接顯示的性能行爲也會隨着工做負載的不一樣而變化。

  • 經過 xcrun simctl io <UDID> recordVideoiOS 1三、tvOS 13和watchOS 6 模擬器進行視頻錄製,將返回一個錯誤而不是錄製視頻。(50625716)

  • watchOS模擬器不支持冷啓動上的斷點。(51148192) 解決方法:在啓動正在調試的應用程序以前,徹底啓動模擬器。

已解決的問題

  • 自動紙板同步功能如今正確的全部模擬器運行 iOS 11.1 和更新。(53231481) 在模擬器中獲取粘貼板後當即調用 Send Pasteboard 將再也不致使設備不可用。(52866417)

  • 修正了用 simctl 覆蓋細胞欄的能力。(51698044)

  • 模擬器中的旋轉設備自動選項與 iOS 13模擬器兼容。(51147050)

  • 當模擬器不是 macOS Catalina 10.15 上的前臺應用程序時,模擬器將遊戲控制器事件交付給模擬設備。(51759699)

  • 修正了一個致使模擬器中止向屏幕顯示幀更新的問題。(51993678)

  • 模擬器正確地顯示了註冊時的 Touch ID > Enrolled 的複選標記。(50553667)

  • 主機和模擬設備之間的紙板自動同步的行爲是正確的。(46686100)

  • Safari 對模擬器的共享行爲正確。(49331693,49416352)

  • 解決了 IOSurface實例macOS 10.14.5及更早版本模擬器 進程中的泄漏問題。(50880827)

  • iCloud同步 能夠在iOS模擬器中使用。(50924245)

  • 當TVOut被配置爲「斷開鏈接」時,iOS 13模擬器 沒有鏈接模擬顯示。(50829453)

  • iOS模擬器 的顏色匹配金屬的內容,以顯示的顏色空間。(50625671)

  • 解決了一個使用 Metal 的核心圖像着色器沒法在ios13模擬器上運行的問題,並禁用了錯誤的 「Metal DAG編譯器」。」(51521248)

  • 遊戲控制器與 iPad模擬器 能夠正常工做。(51034639)

  • 解決了在 iOS 13以前運行iOS版本的模擬器 設備沒法正確呈現顯示的問題。(50963987)

  • IOSurface 如今能夠在 ios1三、watchOS 6和tvOS 13模擬器 中運行。(11051639)

  • 模擬器中播放音頻的應用程序也再也不自動打開麥克風輸入。(32406954)

  • 將刪除 simctl 列表 JSON 輸出中之前不推薦的可用性字段。使用 isAvailable Boolean 字段肯定可用性。(45142676)

  • ATSC紋理格式支持透明地解壓他們在 CPU 上,而後再上傳到 macOS GPU。(51347811)

Source Control

新特性

  • 如今您能夠從一個分支到另外一個分支進行更改。(18285039)

  • 克隆新存儲庫時,如今能夠從可用分支列表中選擇要簽出的分支。(41122122)

  • 使用新的源代碼控制文件檢查器,您能夠瀏覽當前分支文件的完整歷史記錄。日誌檢查器適用於全部文件類型,包括接口構建器文檔。(45109443)

  • 如今,您能夠從源代碼控制導航器中隱藏更改和管理隱藏。此外,Xcode還提供自動保存和恢復源代碼控制操做的更改,好比從存儲庫中提取更改。(8797804)

  • 源代碼控制做者如今能夠在每一個編輯器的基礎上使用。(45108927)

已知問題

  • 當在已啓用rebase的分支上執行 Pull in Xcode 時,工做表不會自動關閉。(50377240)

  • 若是文件已重命名,則從源代碼控制日誌檢查器中查看文件修訂的更改可能會失敗。(49673170)

  • 對於位桶雲或位桶服務器託管的賬戶,不支持在 Add Package assistant 中過濾包。(47290085)

  • GitLab或GitLab 自管理託管賬戶不支持在 Add Package assistant 中過濾包。(47290125)

  • 當使用xcodebuild時,解析包可能沒法驗證 SSH指紋,除非指紋已經在~/.ssh / known_hosts文件中。(50686014) 解決方案:在使用 xcodebuild 以前,經過 SSH 到主機並從命令行驗證指紋,或者手動將主機指紋添加到 ~/.ssh / known_hosts 文件中。

已解決的問題

  • 改進了在項目導航器中選擇 Package.swift 文件時顯示源代碼控制信息的功能。(50696823)

  • 若是做者信息還沒有在 Preferences > Source Control 控制中爲Git配置,則使用rebase進行提取將再也不失敗。(48680076)

  • 解決了託管賬戶提供者(如GitHub 和 BitBucket )在添加賬戶表中不可用,而且之前添加的賬戶將被禁用的問題。(47645098)

  • 解決 Xcode 中的源代碼控制操做出現「沒法與助手應用程序通訊」對話框的問題。(47227781)

  • 修復了我的、組織和星型存儲庫加載時間較長的性能問題。(48620126)

  • 解決了添加GitHub賬戶後,來自 GitHub 的用戶頭像並不老是加載的問題。(48698029)

  • 修正了代碼評審編輯器中某些源編輯器菜單選項不可用的錯誤。(48774008)

Source Editor

新特性

  • 語義突出顯示、代碼完成、實時問題、符號搜索和跳轉到定義如今都支持 Metal 着色語言。(45144204)

  • 經過單擊源代碼控制更改欄並選擇顯示或隱藏更改,介紹了在源代碼編輯器中查看內聯代碼差別的功能。(49073551)

  • 增長新的高對比度(暗)主題和高對比度(光)主題。還爲標記、類型聲明和其餘聲明添加了新設置。(50036007)

  • Swift文件 中的聲明添加了專用的語法着色,能夠在類型聲明和其餘聲明下的首選項>字體和顏色中自定義。 宣言着色 C-family 語言不支持。(10342935)

  • Xcode 的源代碼編輯器如今支持拼寫檢查。(32062963)

  • Xcode 11 的源代碼編輯器引入了該文件的一個迷你映射。這個迷你地圖包括Mark:的可讀文本,高亮顯示的帶有錯誤和警告的行,源代碼控制更改,斷點,以及高亮顯示的 Find results。迷你地圖在默認狀況下是啓用的,而且能夠在每一個編輯器中關閉。(35939517)

  • 在文檔註釋和遊樂場標記中爲標記添加語法高亮顯示。您能夠在文檔標記下的首選項>字體和顏色中自定義散文字體,並在首選項>文本編輯>顯示中自定義分隔符外觀。(42941263)

  • Toggle註釋支持多個遊標。(44319433)

  • 拖放文本時,行與行之間會留出空間,以便更容易地看到文本將被拖放到何處。拖拽完整行時,Xcode只容許在其餘行之間拖放。(44735912)

  • 編輯器容許分層代碼摺疊。(47502128)

  • 代碼摺疊支持方括號和圓括號。(50460404)

  • // MARK: comments和#pragma MARK指令如今在編輯器中畫一條分隔線。顯示標記分隔符的首選項位於首選項>文本編輯>顯示>顯示標記分隔符。(7299224)

已解決的問題

  • NSProgressIndicator 對象如今保存構建和運行時在檢查器中配置的當前值。(43257511)

  • c++操做符重載顯示在跳轉欄中。(50841460)

  • 解決了Xcode在運行時使用鍵盤快捷鍵錯誤打開助理編輯器的問題。(37995114)

  • // MARK: comments和#pragma 標記指令添加了專用的語法着色,您能夠在首選項>字體和顏色>標記中定製它們。(22114159)

  • 您能夠命令單擊Swift操做符來使用 Quick Help 並跳轉到 Definition 。(32695862)

  • 解決了在Objective-C中編輯未關閉塊時可能發生的問題。(48201424)

  • 解決了代碼完成將廢棄符號排序在非廢棄符號以前的問題。(38422586)

  • 解決了刪除文本時代碼完成行出現空的問題。(48621410)

  • 解決了在使用 thrownoexcept 子句時沒有正確解析 c++函數 的問題。(37682611)

  • 在輸入時,可訪問性縮放焦點如今跟隨源編輯器中的插入點。(32775118)

  • 當在源編輯器中逐行移動時,VoiceOver 不會重複上一行。(34334763)

  • VoiceOver 在源編輯器中有用於方法、錯誤、警告、斷點和標記的轉子,這使得搜索和移動到與錯誤或其餘轉子項對應的代碼行很是容易。(34493080)

  • VoiceOver 文本屬性如今包括源編輯器中一行代碼的空格數、製表符數、縮進級別和行號。(34607795)

  • 當讀入源編輯器時,VoiceOver 再也不圍繞佔位符標記說額外的字符,並說它們是佔位符。(44941610)

  • 解決了 c++原始字符串沒有正確突出顯示的問題。(10770485)

  • 解決了 c++類聲明在使用限定名、模板或多重繼承時沒法正確解析的問題。(11286215)

  • 解決了在跳轉欄中沒有顯示嵌套在函數或方法中的本地類的問題。(13337638)

  • 解決了 c++ 11 後置返回類型不能正確識別的問題。(13634062)

  • 解決了 c++ 類型枚舉沒有正確解析的問題。(13693443)

  • 改進了使用可用性宏和屬性的聲明的解析。(14569168)

  • 解決了不識別帶單引號的 c++ 數字文字的問題。(18121031)

  • 解決告終構體成員函數沒有正確解析的問題。(27946356)

  • 解決了在跳轉欄中沒有正確顯示枚舉聲明的問題。(32518576)

  • 改進了 JavaScript 中類和函數的識別。(42537831)

  • 解決了返回枚舉類型的函數沒有正確解析的問題。(46164630)

  • 解決了無符號和長整數文字語法顏色不正確的問題。(47138177)

  • 更新 JavaScript 語法高亮顯示,包括 ECMAScript 6 關鍵字。(47354463)

  • 修正了雙擊 c++析構函數 名會致使

Static Analyzer

新特性

  • 靜態分析器檢查 mach 服務器例程中是否違反了 MIG 調用約定。這些違反行爲可能會致使使用後免費的漏洞。(35380337)

  • 靜態分析器檢查是否違反了 IOKit和libkern 引用計數規則。(46357478)

  • 靜態分析器檢查是否違反了 DriverKit 引用計數規則。這些違規行爲可能致使泄漏和無償使用後的問題。(50349513)

Swift

新特性

  • 結構和枚舉的 @frozen屬性 如今可用。(36597490)

  • 結構的成員式初始化器如今爲包含默認表達式的變量提供默認值。(SE-0242, 47130624)

struct Dog {
    var name = "Generic dog name"
    var age = 0

    // The synthesized memberwise initializer
    init(name: String = "Generic dog name", age: Int = 0)
}

let sparky = Dog(name: "Sparky") // Dog(name: "Sparky", age: 0)
複製代碼
  • 如今可使用類型別名聲明 @autoclosure參數。(SR-2688, 50560849)
class Foo {
    typealias FooClosure = () -> String
    func fooFunction(closure: @autoclosure FooClosure) {}
}
複製代碼
  • 類中使用@objc屬性聲明的方法如今能夠返回Self。(SR-7601, 50560991)
class MyClass: NSObject {
    @objc func clone() -> Self { return self }
}
複製代碼
  • 鍵路徑表達式如今能夠包含對元組元素的引用。(50562288)

  • 接受Any類型值的單參數函數再也不優先於其餘函數。(50562333)

  • 如今已經徹底實現了元組類型之間的轉換。在此以前,下面將診斷一個錯誤。(SR-2672, 12340004)

let values: (Int, Int) = (10, 15)
let converted: (Int?, Any) = values
複製代碼
  • 如今能夠聲明和使用類型下標,就像類型屬性和類型方法同樣。經過對下標聲明應用靜態或(在類中)類修飾符來聲明。(SE-0254, 16555559)
// Declare a type with a static subscript:
enum ProcessEnvironment {
    static subscript(name: String) -> String? {
        get { getenv(name) }
        set { setenv(name, to: newValue) }
    }
}

// Use it with any of these syntaxes:
ProcessEnvironment["PATH"]! += ":/usr/local/bin"
ProcessEnvironment["PATH"]! += ":/usr/local/bin"
someVarOfProcessEnvironmentDotType["PATH"]! += ":/usr/local/bin"
複製代碼

類型下標還能夠與動態成員查找一塊兒使用,以建立動態類型屬性。

// Declare a type with a static subscript:
@dynamicMemberLookup
enum ProcessEnvironment {
    // …As above…
    static subscript(dynamicMember name: String) -> String? {
        get { self[name] }
        set { self[name] = newValue }
   }
}

// Now you can use property syntax with ProcessEnvironment:
ProcessEnvironment.PATH! += ":/usr/local/bin"
ProcessEnvironment.self.PATH! += ":/usr/local/bin"
someVarOfProcessEnvironmentDotType.PATH! += ":/usr/local/bin"
複製代碼
  • 指定 Optional.none 與一樣具備 none 大小寫的枚舉進行比較,或將此類枚舉與 Optional 進行比較。如今沒有一個會發出警告。這樣的表達式會產生歧義,由於編譯器會選擇可選的。none 超過您本身的枚舉定義的 none 用例。(SR-2176, 26126801)
enum Foo { case none }

// Assigned Optional.none instead of Foo.none.
let foo: Foo? = .none
// Comparing with Optional.none instead of Foo.none.
let isEqual = foo == .none
複製代碼

編譯器會提供一個警告,並提供一個修復程序來用 Optional替換.none。沒有或 Foo。沒有人能解決這種含糊不清的問題。

  • 函數如今能夠經過聲明它所遵循的協議來隱藏它們的具體返回類型,而不是指定確切的返回類型:
func makeACollection() -> some Collection {
    return [1, 2, 3]
}
複製代碼

調用該函數的代碼可使用協議的接口,但不能看到底層類型。(SE-0244, 40538331)

  • 枚舉如今能夠匹配一個可選枚舉,而不須要' ?」「在圖案的末尾。(SR-7799, 41494702)
enum Foo { case zero, one }

let foo: Foo? = .zero

switch foo {
    case .zero: break
    case .one: break
    case .none: break
}
複製代碼
  • 現有的 @dynamicMemberLookup 屬性如今支持鍵入鍵路徑實現。(SE-0252, 49069813)
struct Point {
    var x, y: Int
}

@dynamicMemberLookup
struct Box<T> {
    var v: T

    init(_ v: T) {
        self.v = v
    }

    subscript<U>(dynamicMember member: KeyPath<T, U>) -> U {
        get { return v[keyPath: member] }
    }
}

var box = Box(Point(x: 0, y: 0))
_ = box.x
複製代碼
  • 如今,您可使用Self表達式來引用結構、枚舉和類聲明中最內層的標稱類型。例如,這個結構中的兩個方法聲明是等價的:
struct Box<Value> {
    func transform1() -> Self { return self }
    func transform2() -> Box<Value> { return self }
}
複製代碼
  • 在類中,Self 和前面同樣是 Self 值的動態類型。聲明類型中對Self的現有限制仍然適用;也就是說,Self 只能做爲方法的返回類型出現。然而,Self如今能夠在方法體中無限制地使用。(SE-0068, 17892696)

  • ArrayContiguousArray 如今都有 init(unsafeUninitializedCapacity:initializingWith:) 初始化器,它提供對數組未初始化存儲的訪問。(21880692)

  • 實現了更完全的檢查,以肯定轉義閉包的限制,這些閉包捕獲的 in-out 參數或 noescape 類型的值。雖然大多數代碼不受影響,但在某些狀況下,Swift 5.0 編譯器接受的代碼違反了這些限制。(SR-8546SR-9043, 43355341)

  • Swift 5.0編譯器錯誤接受無效代碼的一個例子是 @escaping 閉包,它調用一個本地函數,該函數從外部範圍引用 in-out 參數:

struct BadCaptureExample {
    var escapingClosure: () -> ()

    mutating func takesInOut(_ x: inout Int) {
        func localFunction() {
            x += 1
        }

        escapingClosure = { localFunction() }
    }
}
複製代碼
  • 編譯器如今經過指出 localFunction() 捕獲x是無效的來正確診斷上面的代碼,由於 localFunction() 是從 @ escape 閉包引用的。
  • 這還解決了編譯器錯誤地將某些代碼診斷爲無效的某些狀況,而實際上並無發生違反限制的狀況。例如:
func takesNoEscape(_ fn: () -> ()) {
    func localFunction() {
        fn()
    }

    { localFunction() }()
}
複製代碼

已知問題

  • 若是類型與其包含的模塊具備相同的名稱,則從模塊接口導入該模塊可能會失敗。(19481048,48445154) 解決方法:重命名類型,使其再也不與模塊名稱衝突。

已解決的問題

再也不容許重複元組元素標籤,由於這會致使不正確的行爲。(SR-8974, 45218256) 如下內容如今被診斷爲錯誤:

let dupLabels: (foo: Int, foo: Int) = (foo: 1, foo: 2)
enum Foo {
    case bar(x: Int, x: Int)
}
let f: Foo = .bar(x: 0, x: 1)
複製代碼

只要內部標籤不一樣,在聲明函數和下標時仍然可使用重複標籤。例如:

func foo(bar x: Int, bar y: Int) {}
subscript(a x: Int, a y: Int) -> Int {}
複製代碼
  • 帶有不透明返回類型的聲明須要在iOS 1三、macOS 10.1五、watchOS 6或tvOS 13中使用Swift 5.1運行時,由Swift編譯器強制執行。(50731151)

  • 在macOS 10.9以前廢棄的API在編譯時只須要應用程序擴展安全的API構建設置就會正確地顯示爲不可用。(51417764)

  • 從終端啓動時,Swift REPL工做正常。(51374106)

  • 若是類型使用不透明的返回類型來知足協議的關聯類型要求,而且關聯類型在另外一個泛型聲明中按名稱引用,則編譯器再也不崩潰。(50509030)

  • 靜態庫如今老是在連接期間所有強制加載,以修復與請求失敗相關的運行時錯誤。(47598583)

  • 弱的和無主的存儲特性再也不抑制自動合成的 Equatable  或者 Hashable。(sr - 9827, 50566123)

  • 若是崩潰日誌中的符號沒有正確解調,運行quick -demangle命令並傳入崩潰日誌的內容。(34920390)

SwiftUI

已知問題

  • 在沒有爲 OTHER_SWIFT_FLAGS 設置 -DDEBUG 設置的項目中定義的預覽提供程序,若是在畫布中沒有顯示調試,則將其封裝在#中。這發生在Objective-C 應用中,Objective-C 從未指定 OTHER_SWIFT_FLAGS。(51138834) 解決方法:從 PreviewProvider 聲明周圍刪除 #if DEBUG和#endif

  • 使用 Xcode 11 beta 5,預覽只在 macOS Catalina 10.15 beta 5 上可用,並且只有 Xcode 11 beta 5 支持在 macOS Catalina 10.15 beta 5 上預覽。(52059562)

  • 軟件鍵盤不會出如今預覽中。(35615536)

  • 使用與系統類型相同的名稱命名類型可能致使預覽失敗。(51531683) 解決方法:不要對您的類型使用與系統類型相同的名稱。

  • 在運行設備預覽時進行的代碼更改可能會在應用程序從新啓動時短暫顯示主屏幕。(48208765)

  • 在實時預覽中沒法縮放。(51183125) 解決方法:退出活動模式或使用畫布或編輯器菜單中的縮放控件。

  • iOS、tvOS和watchOS 的靜態預覽不支持 SceneKit、MapKit和Metal視圖,在呈現更新時會出現延遲。(50965310)

  • 若是現有視圖位於視圖生成器中條件語句的頂層,則致使容器插入現有視圖和容器中的新同級的拖放操做將不起做用。例如,不能在 Text 周圍刪除   HStack  或者  VStack。(50300406):

var body: some View {
    VStack {
        if true {
            Text("Hello World")
        }
    }
}
複製代碼

解決方法:將現有視圖嵌入到容器中——不管是在畫布中仍是在源編輯器中——而後將新視圖放入容器中。

  • 包中的預覽老是執行活動方案的完整構建。(51030302)

  • Text 修飾符拖放到畫布中已經具備 View 修飾符(例如 frame(width:height:alignment:) 的文本上,將致使編譯錯誤。(50712235) 解決方法:從新排序修飾符,使特定於文本的修飾符出如今任何視圖修飾符以前。

  • HStack  和  VStack檢查器不支持自定義佈局指南。(49710501) 解決方法:使用 source editor做爲自定義佈局指南。

  • 屬性檢查器不容許指定靈活的幀。(51310989)

  • 第一次在畫布中進入實時預覽模式可能須要幾秒鐘。(46505269)

  • 在文件之間切換時,預覽可能會失敗或更新不正確。(50841287) 解決方法:在活動文件的末尾添加新行,而後單擊出現的橫幅中的 Resume

  • 屬性檢查器在畫布關閉後仍然可見,停留在最後選定的項上,而且不起做用。(50958316) 解決方法:從新打開畫布或切換到其餘文件。

  • 預覽不適用於啓用了應用沙箱的 macOS應用程序。(51088926)

  • 對於符合 PreviewProvider 的私有和文件私有結構,預覽不會出如今畫布中。(47011316) 解決方法:從符合要求的類型中刪除私有或文件私有訪問控制。

  • 第一次在運行目標選擇器中切換設備時,預覽可能須要幾秒鐘更新。(47562171)

  • 在從 Scheme 彈出菜單切換使用運行目標的設備時,預覽可能會暫時顯示不正確的設備 chrome。(49496647)

  • 畫布不支持焦點。(50275735)

  • 在畫布中沒法撤消。(49651153) 解決方法:將源編輯器放在焦點位置,並在那裏執行撤消操做。

解決問題

  • 預覽檢查器使用系統字體呈現。(52473187)

  • 修正了當你試圖在你的 Mac 電腦上顯示多個設備的預覽時可能發生的崩潰。

  • 修正了檢查包含 SwiftUI 視圖的視圖層次結構時可能發生的崩潰。(52857304)

  • 修正了啓用或禁用實時預覽時可能發生的崩潰。(52083572)

  • 解決了 Apple Watch 預覽在黑色背景上顯示黑色文本的問題。(51676439)

  • 預覽繼續工做後,更改文件名,而不須要切換到另外一個文件和切換回來。(51708183)

  • 預覽尊重導入周圍的條件編譯塊。例如,您能夠有條件地導入由 #if canImport(UIKit) 保護的 UIKit。(51545182)

  • 應用於類型和方法的可用性屬性受到預覽的尊重。當部署目標不包括 SwiftUI (即部署目標在 iOS 1三、macOS 10.1五、watchOS 6或tvOS 13以前)時,您如今可使用 UIViewRepresentable 實例和 UIViewControllerRepresentable 實例來查看視圖和視圖控制器的預覽。爲此,將適當的可用性屬性添加到視圖可表示類型和 PreviewProvider 一致性中,如 @available(ios13.0, *) 。(51493428)

  • 命名顏色在屬性檢查器中是可編輯的。(51287606)

  • 使用 withAnimation(::) 來更改根視圖中的狀態,能夠在實時預覽中正確顯示。(51164838)

  • 動畫在live預覽中保持在它們的上下文中,live預覽與設備上的預覽匹配。(50708417)

  • 解決了在運行目的地選擇器中選擇與Apple Watch配對的設備時,watchOS預覽沒法工做的問題。(50861269)

  • 修正了在顏色檢查器中反覆選擇指定顏色時可能發生的崩潰。(51304163)

  • 當運行在 Apple Watch Series 3上時,使用SwiftUI構建的應用程序再也不表現得像運行在 Apple Watch Series 4 上同樣。(50678109)

SwiftUI Tutorials

已知問題

  • 若是使用 Xcode 11 beta 5 中包含的 sdk,使用 Path 結構可能會致使應用程序崩潰。所以,您可能沒法成功地遵循 Drawing Paths and Shapes 教程中的步驟。(53523206)

Swift Packages

已知問題

  • 沒有顯式的命令行選項來使用 xcodebuild 構建 Swift包。(45575820) 解決方法:運行xcodebuild -workspace。在包含 Package.swift 文件的目錄中。

  • 獨立軟件包不支持預覽。(51072409)

  • Swift包不支持在目標中添加資源文件——好比圖像、故事板或音頻。(SR-2866, 33389529)

  • Swift 包不支持處理本地化的字符串文件。(48190792)

  • 在項目中移動本地包將把它轉換爲文件夾引用。(50320585)

  • 鏈接到 app 及其測試目標的打包產品會產生重複的符號。(50348625) 解決方法:只在應用程序或測試目標中連接包產品。

  • 爲Swift包自動生成的方案在包添加或刪除目標時不會自動更新。(50586754) 解決方案:從包目錄中的 swiftpm/xcode/xcshareddata/xcscheme 目錄中刪除該方案,而後從新打開包,自動生成一個新方案。

  • 若是在方案中選擇的構建配置未命名爲 Debug或Release,則使用調試條件設置的 Swift 包構建的目標。(50696202)

  • 從工做區中刪除本地包引用將從工做區中的全部 Xcode 目標中刪除其包產品,即便對該本地包的其餘引用仍然保留在工做區中。(50706448) **解決方案*8:將包產品引用添加回相關目標。

  • 不支持預覽 Swift 包中的代碼,這些代碼沒有被活動方案引用,也沒有被連接到應用程序目標,而且顯示錯誤消息。(50909384)

  • 新建立的 Swift 包的測試目標沒法爲 watchOS 構建,由於 XCTestwatchOS 上不可用。(51054894) 解決方法:用條件編譯語句包圍 watchOS 測試目標中引用 XCTest 框架或其api的任何代碼。例如:

#if !os(watchOS)
// XCTest code
#endif
複製代碼

已解決的問題

  • 在沒有搜索結果時,在 Add package Dependency 工做表中搜索包存儲庫。(51223367)

  • 不管在package . Swift 清單文件中聲明的目標的名稱與該目標的目錄名在大小寫上不一樣,代碼補全都適用於 Swift包目標。(49648458)

  • Swift包的c族 目標中添加新文件不會建立擴展名爲 . Swift的文件。(31395814)

  • 使用 unsafeFlags 構建設置的Swift包不能做爲依賴項使用。(50354068)

  • 當使用 Swift包 管理器構建 Swift包 測試時,XCTUnwrap API 是可用的。(51115369)

  • 若是本地包覆蓋了項目中的遠程包,而且本地包具備沒法知足的包依賴關係,那麼 Xcode 將再也不崩潰。(51183216)

Testing

新特性

  • 支持編寫與SwiftUI視圖交互的XCTest UI測試。(35224680)

  • 測試計劃是一種管理哪些測試運行以及這些測試如何運行的新方法。方案能夠引用多個測試計劃,併爲自動化定義一個默認的測試計劃。一個新的測試計劃編輯器支持定義測試配置,它能夠從計劃自己繼承共享設置。在Xcode中運行測試如今能夠跨全部測試配置運行測試。更新源編輯器測試菱形以支持在單個配置中運行測試,並更新測試導航器以容許選擇活動測試計劃。更新測試報告以支持顯示測試計劃生成的結果。(16138582)

  • XCTest使用新的度量(度量:options:block:)方法和相關方法加強了性能測試功能。metrics參數須要符合XCTMetric協議的對象列表。您能夠實現本身的自定義度量,或者使用 XCTClockMetric ,  XCTOSSignpostMetric ,  XCTCPUMetric ,  XCTMemoryMetric , 和  XCTStorageMetric。(49430032) 下面顯示了一個示例性能測試測量的 CPU 和內存影響排序列表:

func testExample() {
    // Measures the CPU and memory impact of sorting the input list.
    measure(metrics: [XCTCPUMetric(), XCTMemoryMetric()]) {
        sortedList = qsort(list: self.fiftyNumbersFrom0to100)
    }
}
複製代碼
  • 添加了一個斷言函數 XCTUnwrap,用於 Swift測試XCTUnwrap 斷言可選變量的值不是nil,若是斷言成功,則返回其值。這消除了將 XCTAssertNotNil(::file:line:) 與展開值或處理測試其他部分的條件連接相結合的須要。例如:
func testFirstNameNotEmpty() throws {
    let forenames: [String] = customer.forenames

    let firstName =  try XCTUnwrap(forenames.first)
    XCTAssertFalse(firstName.isEmpty)
}
複製代碼

XCTUnwrap是一個拋出斷言,最好在拋出測試方法中使用,如上例所示。(30667432)

  • 除了原始報告和存檔文件外,xccov 如今還支持直接傳遞結果包。例如,要查看結果包中的覆蓋率報告,能夠調用 xccov,以下所示: xccov視圖——report /path/to/result_bundle.xcresult。(50500789)

*結果包的格式在 Xcode 11 中更改。結果包是 Xcode 11 使用 xcresult 文件擴展名生成的資產,該擴展名包含有關構建、測試、代碼覆蓋率等信息。使用 Xcode 10 或更早版本生成的任何 xcresult文件都不能被Xcode 11讀取。經過傳遞 -resultBundlePath ./Example 能夠生成一個結果包。將 xcresult 轉換爲xcodebuild 調用和示例。而後能夠在 Xcode中打開 xcresultXcode 還在派生數據中建立結果包。當前的結果包版本號是3,能夠經過傳遞xcodebuild標誌-resultBundleVersion 3來指定。版本3是Xcode 11中的缺省版本,可是仍然建議自動化顯式地傳遞該標誌,以便未來任何可能成爲缺省版本的版本都不會對現有工具形成問題。可使用xcresulttool檢查結果包。可使用xcrun xcresulttool get——format JSON——path ./Example導出結果包根對象的JSON表示。能夠經過添加標記——id REF. xcresulttool來導出xcresult和任何由JSON輸出中找到的引用標識的嵌套對象。xcresulttool還使用xcrun xcresulttool formatDescription` 提供其格式的描述。(41633595)

  • 若是一個測試在多個目標上運行,而且其中一些目標(而不是其餘目標)失敗,那麼測試報告將顯示一個摘要,描述測試失敗的目標,例如「在運行 iOS 12.0iPad 目標上失敗」。(49164968)

  • 當經過源編輯器測試菱形運行測試或測試類時,選擇單擊菱形將顯示一個彈出窗口,該彈出窗口容許在活動測試計劃中的特定配置下運行測試(若是測試計劃具備多個配置)。(46348663)

  • 當查看在多個目標上運行的測試的測試報告時(例如 Xcode 服務器集成,或者 xcodebuild 調用使用多個目標說明符生成的結果包),如今能夠根據目標過濾顯示的結果。單擊範圍欄中的 devices 按鈕將顯示運行測試的目標列表,包括僅隱藏或顯示感興趣的目標的功能。此外,如今能夠經過範圍欄中的「混合」按鈕過濾到僅在一個目標上失敗但在另外一個目標上成功的測試。(48981032)

  • xcodebuild 生成的結果包如今能夠在Xcode中直接共享、雙擊和打開。(38620469)

  • 介紹了對 Mac Catalyst 應用程序編寫基於 xctest 測試的支持。(41530313)

  • 默認狀況下,爲新建立的測試計劃啓用了代碼覆蓋率。(48749597)

  • macOSUI 測試中,鼠標移動(包括對 hover API 的調用以及對 click、scroll 和其餘 API 的調用)將在屏幕上逐步移動光標,就像用戶在實際交互中所作的那樣,而不是當即將光標移動到最終位置。這可能會給嚴重依賴鼠標懸停行爲的UI測試帶來問題。(49430331)

  • 爲測試計劃修改 .xctestrun 文件格式,以包含關於如何在計劃中執行每一個測試配置的信息。當運行 xcodebuild build-for-testing 計劃使用測試計劃,生成 .xctestrun 文件使用 FormatVersion 2 和有一個修改後的屬性列表結構。.xctestrun文件生成的計劃,不要使用測試計劃繼續使用 FormatVersion 1和xcodebuild test-without-building 接受要麼版本。(46346053)

  • 測試計劃編輯器中的代碼覆蓋率設置不支持選擇用於收集代碼覆蓋率的單個目標。若是測試計劃是經過將一個計劃轉換爲使用測試計劃來建立的,而且該計劃在轉換時選擇了單獨的代碼覆蓋率目標,那麼這些目標將保留在最終的測試計劃中,可是不能在計劃中編輯。(50502861)

  • xcodebuild 加強了支持測試計劃的新選項。使用 new -showTestPlans 選項列出與方案關聯的全部測試計劃。使用新的 -testPlan <name> 選項指定與用於測試或構建測試的方案相關聯的測試計劃。若是沒有指定 -testPlan <name>xcodebuild 測試將使用方案的默認測試計劃。(46346197)

  • Xcode 11 引入了在 Xcode 本地化目錄中自動包含來自 XCTest 的屏幕截圖的選項。在測試計劃或 scheme 編輯器中啓用本地化截圖,而後在導出本地化時檢查「包含截圖」。(28656175)

已知問題

  • XCTUnwrap API只在主要測試包目標中可用,而在其餘庫或框架中不可用。(51117167) 解決方案:將任何使用XCTUnwrap的庫代碼移動到您的主測試包目標,或者在受影響的目標中手動修改如下構建設置:
SYSTEM_FRAMEWORK_SEARCH_PATHS = "$(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks"
LIBRARY_SEARCH_PATHS = "$(inherited) $(PLATFORM_DIR)/Developer/usr/lib"
SWIFT_INCLUDE_PATHS = "$(inherited) $(PLATFORM_DIR)/Developer/usr/lib"
複製代碼
  • 測試計劃編輯器容許啓用某些消毒劑和內存診斷的組合,這些組合是不兼容的,不該該同時啓用。例如,Address Sanitizer 和保護 Malloc ,或者Address SanitizerThread Sanitizer。(49739613) *解決方案 :不要將銷燬者和不兼容的內存診斷設置組合在一塊兒配置測試計劃。若是測試計劃的共享設置在測試配置中繼承了不兼容的設置,則手動覆蓋該設置,以禁用受影響的測試配置。

已解決的問題

  • Xcode 中的結構化構建日誌,以及獨立的結果包,再次顯示了每一個步驟的持續時間。(48126238)

  • 修正了一個阻止UI測試運行器發出任意網絡請求的問題。(52856418)

  • 修正了一個問題,該問題阻止啓動UI測試目標,該目標的名稱包含一個連字符,後面直接跟一個數字。(51857798)

  • 編輯引用與包含活動方案的項目不一樣的項目中的測試目標的測試計劃,將再也不致使這些測試目標被標記爲缺失。(50148373)

  • 您能夠在包解析期間在包含 Swift包 的工做區中運行測試。(48719922)

  • 在正確啓用代碼覆蓋率的狀況下運行測試,將在模擬器和 Mac 上生成 iOS應用程序 的覆蓋率報告。

  • 修正了 Mac上iPad 應用程序 UI測試 的一個問題,當試圖與表格視圖單元內的元素交互時,可能會出現hit測試錯誤而失敗。(50745246)

  • 一個方案的測試操做中的並行執行復選框如今對 Swift包 的測試目標啓用了。(47564543)

  • 解決了啓動測試操做時檢查設備可用性時可能發生的崩潰。(51245770)

  • 解決了在模擬器中沒法爲 Mac Catalyst 應用程序或 iOS應用程序 生成代碼覆蓋率報告的問題。(51241460)

  • XCUIElement 上的 exists 屬性如今在XCTest沒法檢查應用程序UI的狀況下(例如,因爲應用程序的主線程沒有響應)產生測試失敗,而不是在這些狀況下返回false。(37359653)

  • 單元測試發現機制對於大型項目更有效。從新打開項目後,測試導航器的填充速度更快。(32567980)

TestFlight

已知問題

  • 運行 tvOS 12.3或更早版本的TestFlight應用程序 分發到 Apple TV 4K 上,適用於部署目標在 tvOS 13以前的tvOS應用程序。(53017497)

這一篇 Xcode 11 Beta 5 翻譯 官方文檔 長夜漫漫,獨自一人翻譯。若有紕漏敬請原諒(同時還望指出,及時更改,以惠後人)。內容更新角度是空前的,我相信正式版來臨必將震撼整個互聯網行業!經過如今 Xcode 11 出現以後的 SwiftUI + Combine 就知道!身處互聯這個利益的漩渦之中,咱們惟一能作的就是與時俱進

就問此時此刻還有誰?45度仰望天空,該死!我這無處安放的魅力!

相關文章
相關標籤/搜索