在 Swift 2 中,我能够像这样初始化一个空的 NSZone
结构:
let z = NSZone() // ObjectiveC.NSZone
我用它来 stub 测试需要 NSZone
的调用。在 Swift 3 中,接口(interface)发生了变化,初始化器不再可用:
swift 2.3:
public struct NSZone : NilLiteralConvertible {
public init()
/// Create an instance initialized with `nil`.
public init(nilLiteral: ())
}
swift 3:
public struct NSZone {
}
Apple 是否正在插入使用可选的 NSZone
而不是旧的 NSZone()
初始化程序,它使用 nil< 初始化
值?NSZone
/
尝试扩展 NSZone
以添加初始化程序导致错误:
extension NSZone {
init() { } // Return from initializer without initializing all stored properties
}
最佳答案
根据 Swift 开源项目的 design doc将 ObjC API 导入 Swift 3:
Nullable NSZone parameters are given a default value of
nil
. Zones are essentially unused in Swift and should always benil
.
如果您正在测试任何需要区域的调用,无论如何您都应该传递 nil
。
关于ios - 使用 Swift 3 初始化一个空的 NSZone 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37800517/