在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
}
答案 0 :(得分:3)
根据Swift开源项目design doc将ObjC API导入Swift 3:
Nullable NSZone参数的默认值为
Worksheet_Change()
。区域在Swift中基本上未使用,应始终为nil
。
如果您正在测试任何需要区域的来电,那么您应该通过nil
。