在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: ())
}
Swift 3:
public struct NSZone {
}
苹果是在推动使用可选的NSZone
,而不是用nil
值初始化NSZone
的旧NSZone()
初始化器吗?
尝试扩展NSZone
以添加初始化程序会导致错误:
extension NSZone {
init() { } // Return from initializer without initializing all stored properties
}
发布于 2016-06-14 01:06:49
根据Swift开源项目的设计文档,将ObjC API导入Swift 3:
可空NSZone参数被赋予默认值
nil
。区域在Swift中基本上是未使用的,并且应该始终是nil
。
如果您正在测试任何需要区域的调用,那么无论如何您都应该传递nil
。
https://stackoverflow.com/questions/37800517
复制相似问题