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

标签 ios swift swift3

在 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 be nil.

如果您正在测试任何需要区域的调用,无论如何您都应该传递 nil

关于ios - 使用 Swift 3 初始化一个空的 NSZone 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37800517/

相关文章:

ios - 为什么 API 拒绝我的 JSON?

ios - Flutter (iOS) 数字键盘小数点分隔符

jquery - iOS 上不触发点击事件

ios - 如何搜索包含集合中某些字符的字符串?

ios - 在开始新的异步操作之前,快速等待现有的异步操作完成

ios - 如何在 swift 3 中调整字体大小以适应高度(而不是宽度)

ios - SpriteKit 中的坐标系

ios - 带有 iOS 粗体文本设置的条形按钮项目色调颜色

ios - 动画按钮图像时 UIButton 文本不可见