使用Swift 3初始化一个空的NSZone结构

时间:2016-06-13 23:06:50

标签: ios swift swift3

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

let z = NSZone() // ObjectiveC.NSZone

我用这个来测试需要NSZone的调用。使用Swift 3,界面已更改,因此初始化程序不再可用:

Swift 2.3:

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

斯威夫特3:

public struct NSZone {
}

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

尝试扩展NSZone以在错误中添加初始化程序结果:

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

1 个答案:

答案 0 :(得分:3)

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

  

Nullable NSZone参数的默认值为Worksheet_Change()。区域在Swift中基本上未使用,应始终为nil

如果您正在测试任何需要区域的来电,那么您应该通过nil