【问题标题】:Init an empty NSZone struct with Swift 3使用 Swift 3 初始化一个空的 NSZone 结构
【发布时间】:2016-06-13 23:06:49
【问题描述】:

在 Swift 2 中,我能够像这样初始化一个空的 NSZone 结构:

let z = NSZone() // ObjectiveC.NSZone

我用它来存根需要NSZone 的测试调用。在 Swift 3 中,接口已更改,因此初始化程序不再可用:

斯威夫特 2.3:

public struct NSZone : NilLiteralConvertible {
    public init()
    /// Create an instance initialized with `nil`.
    public init(nilLiteral: ())
}

斯威夫特 3:

public struct NSZone {
}

Apple 是否正在推动使用可选的 NSZone,而不是使用 nil 值初始化 NSZone 的旧 NSZone() 初始化程序?

尝试扩展NSZone 以添加初始化程序会导致错误:

extension NSZone {
    init() { } // Return from initializer without initializing all stored properties
}

【问题讨论】:

    标签: ios swift swift3


    【解决方案1】:

    根据 Swift 开源项目的 design doc 将 ObjC API 导入 Swift 3:

    可为空的 NSZone 参数指定默认值 nil。区域在 Swift 中基本上没有使用,应该始终为 nil

    如果您正在测试任何需要区域的调用,则无论如何您都应该通过 nil

    【讨论】:

      猜你喜欢
      • 2021-05-03
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多