文章有些長,若是您比較忙能夠快速瀏覽下面的簡單清單bash
Xcode 11.4 beta 帶來了不少很棒的功能!網絡
Swift 5.2,SwiftUI增長更加突出的錯誤提示。閉包
Swift 5.2,帶來了一批語法糖。方向就是減小代碼數量。app
Simulator 支持遠程推送通知框架
UI debugger with layers編輯器
Apple Watch的應用內購買ide
macOS App 將能夠和iOS捆綁銷售函數
Xcode 11.4支持以通用購買的方式構建和分發macOS應用。要將macOS應用做爲通用購買進行分發,請在建立新項目時在Xcode模板助手中指定與iOS應用相同的捆綁包標識符。若是您有現有項目,請在「項目編輯器」中編輯其包標識符。工具
默認狀況下,在Xcode 11.4中建立的新Mac Catalyst應用程序啓用通用購買。建立新的Mac Catalyst應用程序時,它將使用與iOS應用程序相同的捆綁包標識符。佈局
Xcode 11.4中的自動簽名支持使用自定義包標識符構建Mac Catalyst應用。您可使用項目編輯器中的「簽名和功能」選項卡編輯應用程序的捆綁包標識符。若是選擇使用與iOS應用程序不匹配的自定義捆綁包標識符來構建Mac Catalyst應用程序,則將沒法以通用購買的形式分發該應用程序。
經過選擇「文件」>「新建」>「文件」來建立Objective-C類別文件,將再也不建立包含AppKit框架導入的文件。 (55977950)(FB7346800)
struct Adder {
var base: Int
func callAsFunction(_ x: Int) -> Int {
return x + base
}
}
var adder = Adder(base: 3)
adder(10) // returns 13, same as adder.callAsFunction(10)
複製代碼
您能夠在單個類型上添加多個func callAsFunction方法,而且能夠將它們標記爲變異。 func callAsFunction可用於引起和從新引起以及尾隨閉包。 (59014791)
struct Subscriptable {
subscript(x: Int, y: Int = 0) {
...
}
}
let s = Subscriptable()
print(s[0])
複製代碼
protocol Foo {}
class Bar: Foo {
var someProperty: Int = 0
}
// Even though 'Foo' does not impose a class constraint, it is automatically
// inferred due to the Self: Bar constraint.
extension Foo where Self: Bar {
var anotherProperty: Int {
get { return someProperty }
// As a result, the setter is now implicitly nonmutating, just like it would
// be if 'Foo' had a class constraint.
set { someProperty = newValue }
}
}
複製代碼
如今,在定義基類的模塊外部定義的子類的便捷初始化程序繼承具備附加的限制。當這些子類具備帶有非公共指定初始化器的基類時,它們將再也不從其超類中自動繼承便捷初始化器。爲了恢復這種自動繼承行爲,基類必須確保其全部指定的初始化器都是公共的或開放的。 (51249311)
方法覆蓋不能再具備通用簽名,而通用簽名沒有由基本方法強加的要求。例如,如下代碼會產生錯誤。 (23626260)(FB5382462)
protocol P {}
class Base {
func foo<T>(arg: T) {}
}
class Derived: Base {
// generates an error because of the added requirement
override func foo<T: P>(arg: T) {}
}
複製代碼
構建設置具備一個新的評估運算符,即默認值,若是在評估的上下文中評估結果爲nil,則可使用該運算符指定構建設置的默認值。例如:
$(SETTING:default=something)
複製代碼
若是$(SETTING)爲空,則此表達式的計算結果爲「something」。默認值自己能夠是包含構建設置評估的表達式。 (57402718)
如今,要使用新的構建系統構建無代碼內核擴展,須要將GENERATE_KERNEL_MODULE_INFO_FILE的構建設置設置爲NO。 (57247534)
視圖調試器如今提供佈局指南(UILayoutGuide,NSLayoutGuide)及其引用約束。(20387325)
View debugging支持使用「編輯器」菜單中的「顯示圖層」菜單項顯示圖層。 (15775898)
如今,異常緣由做爲編輯器註釋浮現出來。您能夠在「變量視圖」中檢查Exception對象,並在Debug Navigator中找到原始未捕獲異常的回溯(若是有)。 (8045587)
改進了視圖調試器中視圖輪廓的可見性。 (44861893)(FB5361403)
運行iOS 13.0的設備的圖標和名稱可能沒法在「設備和模擬器」窗口中反映正確的OS版本。 (55044395)
解決辦法:從新啓動macOS。
如今,拖放SSL證書(CER或PEM文件)會將證書安裝到模擬設備的受信任根存儲中。 (56225826)
模擬器支持iOS模擬器(13.0及更高版本)的切換外觀。在應用程序中,選擇「調試」>「切換外觀」。在命令行中使用simctl ui子命令,例如設置深色外觀(54556446)(FB7093020)
$ xcrun simctl ui <device> appearance dark
複製代碼
Simulator如今具備菜單項和鍵盤快捷鍵,可在iOS Simulators中調出應用程序切換器。 (54252732)
模擬器如今有一個菜單項,可觸發iOS模擬器中的來賓屏幕截圖功能。這樣會將屏幕截圖保存到模擬設備的相機膠捲中。爲了清晰起見,現有的屏幕截圖功能已重命名爲「保存屏幕」,而且默認狀況下會繼續將設備的幀緩衝區保存到Mac的桌面上。保存屏幕時按住選項可更改默認位置。 (52852628)
Simulator具備一個新的UI,可簡化與仿真設備的協做。模擬設備窗口具備標準標題欄,帶有用於執行常規任務的按鈕。應用程序級設置如今在「首選項」窗口中可用。 (5771502三、5738086五、58013098)
已知的問題 在經過網絡鏈接的設備上對應用程序進行性能分析時,Instruments可能會報告該設備不可用,代表它「正在等待Xcode從設備下載符號」。 (59169574)
解決辦法:使用有線鏈接在設備上或在模擬設備上對應用程序進行配置文件配置。
爲 inspector color pickers添加了動態系統灰色。 (55403376)(FB7281404)
刪除了檢查器對配置NSTableColumn標頭單元格字體以匹配API的支持。您能夠經過子類化NSTableHeaderCell並覆蓋代碼中的font屬性來配置標題單元格字體。 (23664679)(FB5630174)
Xcode可能會因iOS彈出框而掛在某些故事板上。 (59070586)
解決方法:使用Shift從新打開Xcode。
當打開使用彈出式演示文稿的特定nib(UIKit的TestVectorLabelController.storyboard)時,Xcode可能崩潰。 (58421606)
解決方法:使用Shift從新打開Xcode。
QQ:3365059189 SwiftUI技術交流QQ羣:518696470