8e046b0d83d0018064450d15b1e451a7
Xcode 11.4 beta发布带来了许多新的功能

快速阅读

文章有些长,如果您比较忙可以快速浏览下面的简单清单

Xcode 11.4 beta 带来了很多很棒的功能!

  • Swift 5.2,SwiftUI增加更加突出的错误提示。

  • Swift 5.2,带来了一批语法糖。方向就是减少代码数量。

  • Simulator 支持远程推送通知

  • UI debugger with layers

  • Apple Watch的应用内购买

  • macOS App 将可以和iOS捆绑销售

  • Simulator 支持拖拽SSL证书

  • Simulator 截屏保存在模拟器的相机照片中


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)


Swift Packages

  • 具有5.2版及更高版本工具的Remote Swift软件包不再解析仅在其测试目标中使用的软件包依赖关系,从而提高了性能并减少了依赖版本冲突的可能性。 (56925017)
  • Swift软件包管理器使用一种新的策略来解决软件包依赖性,从而显着提高了错误消息的质量以及复杂软件包图中的性能。 (45371461

Swift

  • 您可以调用声明诸如函数之类的func callAsFunction方法的类型的值。调用语法是应用func callAsFunction方法的简写。
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])
  • 类约束的协议扩展(其中扩展协议未施加类约束)现在隐式推断该约束。 (59011997)
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)

top Created with Sketch.