torchvision0.2.2_Xcode 10.2
蘋果在這次春季發布會后,正式發布了 Swift 5 ,正式開啟了 Swift ABI 穩定時代。與 Swift 5 一起,蘋果發布了 Xcode 10.2,以支持 Swift 5 的開發。這個版本的 Xcode 新增了不少特性,同時解決了大量問題。我們翻譯了 Xcode 10.2 Release Notes 文檔,以方便大家了解 Xcode 10.2。
文章比較長,建議主要了解新特性部分。由于整理匆忙,翻譯有誤之處還請留言指正。
Xcode 10.2
? 包含的 SDK:iOS 12.2, watchOS 5.2, macOS 10.14.4, tvOS 12.2
? 支持設備上調試的系統:iOS 8+, tvOS 9+, watchOS 2+
? macOS 系統要求:10.14.3+
通用
新特性
? 支持使用 macOS 內容緩存進行下載。
已解決的問題
? 解決了上傳到 App Store 不包含符號信息的問題。
Apple Clang Compiler
新特性
??-Watomic-implicit-seq-cst?是一個新的警告標識,默認情況下是關閉的,當以隱式的、順序一致的方式使用 C 語言的?_Atomic?或?__sync_*,會發出警告。大多數代碼庫默認使用順序一致性(sequential consistency),但有些要求開發人員在r所有地方使用顯式排序。此警告適用于后一種情況。(28172966)
? 使用引用包含(quote includes)的新診斷標識 framework header 代替了樣式包含(style includes)的 framework。默認情況下警告是關閉,但可以設置 clang 的?-Wquoted-include-in-framework-header?標識來啟用它。(37077034)
??-Wmemset-transposed-args?是一個新的警告標識,用于診斷對轉換了第二個和第三個參數的?memset?的調用。例如,memset(buf, sizeof(buf), 0)?這個調用會使用新警告診斷。(42360478)
??std::pair?的構造函數有條件的標記為?noexcept,依據是其成員的相應構造函數是否為?noexcept。這是一個符合標準的擴展,具有潛在的性能優勢,在那些構造時不會拋出異常的類型上執行更快的構造操作。(29537079)
? 在?std::map?或?std::set?中使用?non-const?可調用謂詞的警告現在顯示了錯誤容器的實例化信息而不是不相關的實現細節。(41370747)
? 不推薦使用??和?headers,而使用新的?C++ 17?的 header:?和?。它們將在 Xcode 的未來版本中刪除,不應該依賴它們的存在。(46903112)
? 已刪除使用內聯宏來控制?libc++?headers 中符號的可見性,以支持更好的解決方案。這將優化包含?libc++?headers 的代碼的大小和性能,以及顯著改善使用?libc++?時的調試體驗。(47259325)
? 框架中的公共 headers 可能會錯誤地?#import?或?#include?私有 header,這會導致分層違規和潛在的模塊引用循環。有一種新的診斷報告了這種違規行為。默認情況下它在 clang 中是關閉的,由?-Wframework-include-private-from-public?標識控制。 (38712182)
? 在框架 headers 中使用?@import?可防止在沒有模塊的情況下使用 headers。一個新的診斷標識在你傳遞?-fmodules?標識時會檢測框 headers 中是否使用?@import。默認情況下,這個診斷在 clang 中是關閉的,并使用?-Watimport-in-framework-header?標志進行控制。(39192894)
? 以前,在為框架聲明模塊時省略?framework?關鍵字不會影響編譯,但是默默地做了錯誤的事情。一個新的診斷(-Wincomplete-framework-module-declaration)和一個新的修復建議添加適當的關鍵字。默認情況下,將?-fmodules?標志傳遞給 clang 時,此警告處于啟用狀態。(39193062)
已解決的問題
? 修復了在檢查 future 是否已附加到?std::async?中的?promise?時發生的數據競爭情況。解決了?std::async?返回一個 non-void future 的問題,但對于返回?std::future?的調用,該問題仍然存在。(42548261)
? 即使從命令行調用 clang 以在單個調用中進行編譯和鏈接時使用?-flto=thin?啟用增量 LTO,鏈接也會成功。(47297739)
? 現在可以正確處理?std::regex?中的反轉字符類,例如?[\S]。(43060054)
??dsymutil?不再耗盡大型項目的系統內存。(41422573)
Asset Catalog
已解決的問題
? 解決了在為本地或企業分發應用程序時影響應用程序與 iOS 9.0、9.1 和 9.2 上的兼容性問題。使用 Xcode 10 構建的應用程序其 Asset Catalog(部署目標為 iOS 9.0,9.1 或 9.2)在使用本地或企業發布分發時生成的內容與這些 iOS 版本的運行時不兼容。使用 Xcode 10.2 重新構建應用程序可以解決此問題。(46893768,44535967)
? 改善了 Dark Mode 下的圖像切片模式。(39388416)
構建系統
新特性
??Implicit Dependencies?現在支持在?Other Linker Flags?中查找使用?-framework,-weak_framework,-reexport_framework,-lazy_framework,-weak-l,-reexport-l,-lazy-l?和?-l?指定的鏈接框架和庫的依賴關系。(7879587)
已知問題
? 如果您正在構建包含 Swift 代碼的 framework 并使用 lipo 創建支持設備和模擬器平臺的二進制文件,則還必須合并為每個平臺生成的?Framework-Swift.h?頭文件以創建支持設備和模擬器的頭文件。(48635615)
例如,如果您已經構建:
-?iOS/Framework.framework-?iOS?Simulator/Framework.framework
得到:
-?iOS/Framework.framework/Headers/Framework-Swift.h-?iOS?Simulator/Framework.framework/Framework-Swift.h
創建一個新的:
-?iOS?+?iOS?Simulator/Framework.framework/Headers/Framework-Swift.h
新 Framework-Swift.h 的內容應該是:
#if?TARGET_OS_SIMULATOR#else#endif
已解決的問題
? 當用作目標依賴項時,外部目標是正確排序的。(44775299)
? 解決了在啟用?COMBINE_HIDPI_IMAGES?和?APPLY_RULES_IN_COPY_FILES?設置時導致 Xcode 將?PNG?和?JPEG?文件作為?TIFF?文件處理的問題。(44623214)
??OTHER_INPUT_FILE_FLAGS?構建設置(傳播源文件的自定義標志)現在可用于使用新構建系統時的自定義規則腳本。(46067251)
??.xcconfig?文件中的遞歸包含循環不再使構建系統崩潰。(42023748)
? 現在,目標構建階段中為?Core Data?模型文件定義的每個文件標志將傳遞給?Core Data?編譯器。(42919919)
Clang 靜態分析器
已解決的問題
? 靜態分析器現在會在使用內容被移動后的 C++ 對象時發出警告,除非在使用對象之前將其重置為已知狀態。(41349073)
? 靜態分析器現在檢查是否違反了?IOKit?和?libkern?的引用計數規則。這些違規行為可能導致泄密和?use-after-free?的問題。(46359592)
調試
新特性
? UIStackView 屬性現在可以顯示在視圖調試器對象檢查器中。(36351873)
? 如果在調試時遇到內存資源異常,Xcode 現在可以自動捕獲內存圖。您可以在方案的運行設置 “Diagnostics” 選項卡中啟用內存圖捕獲。(45285932)
? 在 iOS 和 watchOS 上,當接近內存限制時,Xcode 會在?Memory Report?中顯示運行應用程序的內存限制。使用?Instruments?和?Xcode Memory Debugging?來優化您的應用程序,以盡可能減少內存占用。(40556954)
? 視圖調試器呈現更緊湊的3D布局。(43523921)
已解決的問題
? 在?Assistant Editor?中顯示反匯編的速度得到了改進。(31633031)
文檔查看器
新功能
? 可以通過 SDK 可用性、引入版本和棄用來過濾符號文檔。還可以過濾文檔以僅顯示文章或示例代碼。例如,您可以過濾文檔以顯示 UIKit 等框架所有示例代碼。(45236860)
Instruments
已知的問題
? 在 watchOS 應用程序中 profile Swift 代碼時,Instruments?可能會崩潰。(47368181)
Interface Builder
新功能
? 雙擊 storyboard 不再縮放。相反,使用觸控板上的捏合手勢或按住 Option 并滾動來進行縮放。 (29139870)
? Apple TV 的 Interface Builder 支持 TVUIKit 框架公開的用戶界面元素。 (35868606)
已解決的問題
? 修復了在重新打開 storyboard 后選中?Bindings inspector?中的?Bind to?復選框時可能發生的崩潰。(33348238)
? Interface Builder 預覽中的旋轉按鈕在 Dark Mode 下可見。 (42396497)
? 使用?@objc?@IBAction?注釋時,Interface Builder 可以正確解析 Swift 文件中的 Actions。 (25465675)
? 在資源目錄中指定的對齊矩形的圖像在 Interface Builder 畫布中正確呈現。 (46595020)
? 改進了如果?asset catalog?中的文件名不以 @2x 或 @3x 結尾,在 Interface Builder 畫布中的 2x 和 3x 插槽中圖像的固有大小。(44759471)
? 使用檢查器對?NSImageView?所做的更改現在可以毫無延遲地可靠地反映在畫布中。 (30196881)
??ibtool --export-string-file?包含在具有 NSCell 實例的控件上指定的本地化提示。(24421623)
? 解決了導致圖像在 storyboards 中顯示為問號的問題。(42475635)
? 在 Interface Builder 畫布中呈現的圖像使用與所選設備匹配的比例因子進行渲染。(18703159)
? 在 asset catalog 中使用模板呈現模式標記的圖像在 Interface Builder 畫布中正確呈現。(29049562)
鏈接
已解決的問題
? 當主項目沒有用 Swift 編寫時,現在可以在 dyld 緩存中找到 Swift 庫。 (48385698)
? 解決了導致鏈接器錯誤在問題導航器中顯示為“Linker command failed with exit code 1”而不是顯示實際錯誤消息的問題。 (39141740)
LLDB調試器
新功能
? 現在可以在閉包內的LLDB表達式評估中使用?$0,$1,…。(20719448)
? LLDB 現在支持 C 變長數組。(39606394)
? LLDB調試器有一個新的命令別名?v,用于“frame variable”命令,用于在當前堆棧幀中打印變量。因為它繞過表達式求值程序,所以 v 可以快得多,并且應優先于 p 或 po。(40066460)
已解決的問題
? 調試器現在可以解析綁定到私有類型的泛型變量的類型。(38231646)
? 在 Swift 中使用 po 調試 watchOS 應用程序時,現在返回正確的結果。(47162433)
? 調試器正確支持內聯泛型上下文中的泛型變量。(28859432)
? Swift 詞典和集合的數據格式化程序更可靠。 (43045289)
本地化
新功能
? 打開使用任何已棄用的本地化標識符的項目現在會為每個使用的標識符生成警告。選擇其中一個警告會提供一個助手,用于將關聯的舊“lproj”目錄中的文件遷移到以等效新標識符命名的“lproj”目錄。如有必要,此過程還會將項目的開發區域更新為新標識符。遷移的項目與舊版本的 Xcode 兼容。(9777671)
? 現在可以為項目開發區域導出和導入本地化信息。(41878212)
已解決的問題
? Xcode 現在更仔細地區分遺留的本地化標識符(如“English”)和現代本地化標識符(如“en”),并在項目文件和用戶界面中同時表示它們。(45469882)
? 建議對所有項目啟用?Base Internationalization,并且為任何當前不使用?Base Internationalization?的項目提供升級,即使它們只有一個本地化。升級后的項目與以前版本的 Xcode 向后兼容。(15160454)
? 現在可以將本地化添加到沒有任何本地化文件的項目中,并且不會提示您將文件復制到新的本地化目錄。(42771349)
Playgrounds
新功能
? Playgrounds 現在在運行時執行內存安全檢查。違反對內存陷阱的獨占訪問的代碼,會給出診斷消息:“Simultaneous accesses to […], but modification requires exclusive access.”(SR-8126)(33820622)
已解決的問題
? 解決了阻止 Playgrounds 執行的問題。(47226381)
? 修復了使用輔助源碼編輯 Playgrounds 時可能發生的崩潰。(42097728)
? 修復了編輯包含占位符的片段時可能發生的崩潰問題。(43242401)
? 修復了一個問題,該問題可能會影響 Interface Builder 文檔中的更改在不關閉工作區窗口的情況下反映在 Playgrounds 中。(46830864)
重構
已解決的問題
? 重命名重構現在正確地重命名帶有外部參數標簽的單個參數的函數,并且具有將相應參數作為尾隨閉包傳遞的調用點。(42162571)
? 使用?Refactoring > Rename?重命名 document 現在會更新應用程序的 Info.plist 文件以作匹配 (41327509)
模擬器
已解決的問題
? 改善了與模擬設備交互的性能和響應能力。(47864185)
? 解決了無法在具有大量模擬設備的 Mac 上啟動模擬設備的問題。(47712686)
? 解決了將多個聯系人,照片或視頻項目同時拖動到模擬設備窗口時發生的故障。(46736098)
? macOS 和模擬 iOS 設備之間的粘貼板同步更可靠。(46817121)
? 現在,您只需提示一次授權麥克風訪問,就可以使用所有模擬器設備。(45715977)
? iPhone XR 模擬器的交互性能和響應能力已得到改進。 (44657262)
Source Control
新功能
? Xcode 使用 SSH 配置輸出來確定應該使用哪個 SSH 密鑰對來驗證給定的遠程倉庫。 (47302670)
已解決的問題
? 除了用于連接到 Git 服務器的 PEM 格式之外,Xcode 現在還支持使用?OpenSSH?格式的 SSH 私鑰。 (40867126)
? 解決了導致 SSH 密鑰密碼 keychain 查找失敗的問題。(47578552)
代碼編輯
新功能
? “Fold Methods & Functions” 編輯器菜單項可以折疊 Swift 中的計算屬性。(43428274)
? Code completion 在計算屬性聲明中提供 get,set,didSet 和 willSet 作為可能的實現。(20957182)
? 在可選枚舉類型的上下文中,除了?Optional.none?和?Optional.some(_:)?之外,code completion 會提示枚舉的其它 case。(23549753)
已解決的問題
? 重寫 UITableViewController 方法時,Code completion 不會出現重復的委托方法名稱。(21161476)
? 引用不同的文件的 Fix-its 操作將不適用于當前文件。(31371021)
? 被拖動的文本顯示為透明圖像。(31890166)
? 代碼編輯器現在使用系統顏色作為占位符。(32307338)
? 在占位符之前直接鍵入換行符時,編輯器不會填充占位符。(32853933)
? 修復了如果包含標記的行已被編輯,則使用 Mark 在 Swap 中發生崩潰 (41874263)
? 打開折疊功能區時,編輯器中的打字和滾動性能得到改進。 (42941556)
? 修復了換行的一致性。 (44520372)
? 修復了顯示三個助理編輯器時發生的崩潰。 (45230485)
? 修復了輸入具有多個游標的換行符時發生的崩潰。 (45601228)
? 當關閉換行時,提高了使用折疊代碼滾動源文件的速度。 (45712602)
? 改進了使用黑暗主題時警告和問題的顯示。 (44925116)
(略)
Swift
? 請參閱 Swift 5 Release Notes for Xcode 10.2 https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_release_notes/swift_5_release_notes_for_xcode_10_2?language=objc。
測試
新功能
??xccov?支持將多個覆蓋報告及其關聯的歸檔合并到一個匯總報告和歸檔中。將報表合并在一起時,對于在生成原始報表之間發生更改的源文件,聚合報表可能不準確。如果沒有代碼更改,則匯總報告和存檔會是準確的。有關更多信息,請參閱 xccov 手冊頁。 (38050969)
? xccov 現在支持區分 Xcode 覆蓋率報告,可用于計算覆蓋范圍隨時間的變化。 (43439165)
? 靜態庫和框架目標現在作為頂級條目顯示在 coverage 報告中,其中行覆蓋值在包含靜態庫或框架的所有目標中聚合。這也解決了靜態庫或框架目標的源文件將包含在 coverage 報告中的問題,即使目標本身已從方案中的代碼覆蓋范圍中排除。(22578123)
已知的問題
? Swift initializers 顯示在覆蓋率報告中,沒有名稱。(47467864)
? 啟用?Parallelization?時,Clones?中的錄制無效。 (43699252)
? 如果同一?PRODUCT_NAME?存在多個測試主機目標,則會為測試目標選擇錯誤的測試主機應用。(46475115)
? 啟用測試并行化時,性能分析測試不正常。 (44836817)
解決方法:導航到 Product > Scheme > Edit Scheme > Test > Info,選擇測試目標旁邊的 Options ,并禁用“Execute in parallel”,以在分析時禁用并行測試。
已解決的問題
? 解決了導致 Swift 源文件中的方法在 coverage 報告中命名為“Definition at :”的問題。(46432533)
??XCUIScreen?現在正確實現了?isEqual:?和?hash。(32179407)
? 當單擊代碼編輯器以獲取存在于多個測試目標中的測試方法或類時,或者對于由子類繼承的測試方法時,Xcode 現在會顯示一個菜單,允許選擇要運行的單個目標或類(或全部)選定的測試。(45975871)
? 解決了可能阻止在 coverage 報告視圖中展開文件的問題。(44458167)
? 如果由于某種原因(例如運行時鏈接失敗)在測試期間無法加載測試包,Xcode 現在會報告描述失敗原因的描述性錯誤消息。如果您正在使用 xcodebuild,則此失敗信息存在于測試活動日志中并顯示在 stdout 中。結果包中包含的結構化日志中也存在該錯誤。 (45242409)
? 如果由于測試運行器在啟動時崩潰而導致測試失敗,Xcode 會嘗試生成描述失敗的詳細錯誤消息。如果您正在使用 xcodebuild,則此失敗存在于測試活動日志中并顯示在 stdout 中。結果包中包含的結構化日志中也存在該錯誤。(29148418)
? 如果在測試運行時 xcodebuild 被 SIGINT 信號終止,則會將有效的結果包寫入磁盤,并包含在終止之前完成的測試的結果。同樣,如果取消在 Xcode 中運行測試,則會生成一個包含已完成測試結果的有效結果包。(45022325)
? xcodebuild 或 Xcode 的第二個實例不會刪除在并行分布式測試期間創建的模擬器拷貝。(40738122)
? 解決了可能導致多個目標中包含的文件的代碼覆蓋率不正確的問題。(40409346)
? 在測試期間收集的崩潰報告不再遺漏重要字段,例如終止原因和描述。(44405884)
? 未明確包含在目標的?Headers Build Phase?中的 headers 不再出現在 coverage 報告中的目標條目中。這解決了一個問題,其中不需要的 headers 可能出現在目標的覆蓋率報告中 - 例如來自鏈接的框架或庫。如果您發現覆蓋率報告缺少 header,請確保它們包含在相應目標的 Headers Build Phase 中。 (36187447)
? 具有多個測試目標的項目(每個測試目標包含一個繼承自共享 XCTestCase 子類的測試類)不再顯示來自其他目標的不存在的運行時(“rT”)測試。(46042417)
推薦閱讀
奔向三張,不破不立:一個iOS開發工程師的職業規劃思考
iOS 效率工具:自動生成 Model 文件
Flutter 狀態管理之 Scoped Model & Redux
Core Graphic 指南:線條,矩形和漸變
在看就點點吧?
總結
以上是生活随笔為你收集整理的torchvision0.2.2_Xcode 10.2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电视机怎么连接wifi
- 下一篇: 有什么办法可以增长睫毛