Swift 3 getter 方法

Swift 3 getter method

我想写 getter 并希望 getter return 每次调用时都是同一个对象。这是我的代码。

var someObject:NSObject? {
    get {
        if _someObject == nil {
            _someObject = NSObject()
        }
        return _someObject;
    }
}

编译器报错 使用未解析的标识符“_someObject” 如何在 Swift 3 中编写正确的 getter 方法?

不要按字面翻译 Objective-C 代码。

Swift 等价物是惰性计算 属性

lazy var someObject : NSObject = {
    return NSObject()
}()

第一次访问 属性 和
创建一次对象 你总是得到一个非可选对象。

在 Swift 中,名为 someObject 的 属性 没有名为 _someObject 的支持变量。您 可以 当然可以声明您自己的名为 _someObject 的私有变量。作为一个优点,不需要将 someObject 声明为可选的,因为 getter 不应该是 return nil。