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