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)
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) {}
}

Build系统的新属性

构建设置具有一个新的评估运算符,即默认值,如果在评估的上下文中评估结果为nil,则可以使用该运算符指定构建设置的默认值。例如:

$(SETTING:default=something)

如果$(SETTING)为空,则此表达式的计算结果为“something”。默认值本身可以是包含构建设置评估的表达式。 (57402718)

现在,要使用新的构建系统构建无代码内核扩展,需要将GENERATE_KERNEL_MODULE_INFO_FILE的构建设置设置为NO。 (57247534)

Debbugging 新属性

  • 视图调试器现在提供布局指南(UILayoutGuide,NSLayoutGuide)及其引用约束。(20387325)
  • View debugging支持使用“编辑器”菜单中的“显示图层”菜单项显示图层。 (15775898)
  • 现在,异常原因作为编辑器注释浮现出来。您可以在“变量视图”中检查Exception对象,并在Debug Navigator中找到原始未捕获异常的回溯(如果有)。 (8045587)
  • 改进了视图调试器中视图轮廓的可见性。 (44861893)(FB5361403)

设备

已知问题

运行iOS 13.0的设备的图标和名称可能无法在“设备和模拟器”窗口中反映正确的OS版本。 (55044395)

解决办法:重新启动macOS。

Simulator

  • 现在,拖放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,可简化与仿真设备的协作。模拟设备窗口具有标准标题栏,带有用于执行常规任务的按钮。应用程序级设置现在在“首选项”窗口中可用。 (57715023、57380865、58013098)

Instruments

已知的问题

在通过网络连接的设备上对应用程序进行性能分析时,Instruments可能会报告该设备不可用,表明它“正在等待Xcode从设备下载符号”。 (59169574)

解决办法:使用有线连接在设备上或在模拟设备上对应用程序进行配置文件配置。

Interface Builder

为 inspector color pickers添加了动态系统灰色。 (55403376)(FB7281404)

删除了检查器对配置NSTableColumn标头单元格字体以匹配API的支持。您可以通过子类化NSTableHeaderCell并覆盖代码中的font属性来配置标题单元格字体。 (23664679)(FB5630174)

已知的问题

Xcode可能会因iOS弹出框而挂在某些故事板上。 (59070586)

解决方法:使用Shift重新打开Xcode。

当打开使用弹出式演示文稿的特定nib(UIKit的TestVectorLabelController.storyboard)时,Xcode可能崩溃。 (58421606)

解决方法:使用Shift重新打开Xcode。

下载地址

https://developer.apple.com/download/

更多SwiftUI教程和代码关注专栏

QQ:3365059189

SwiftUI技术交流QQ群:518696470

https://www.jianshu.com/c/7b3...

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章