在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
复制相似问题