2016-11-27 57 views
0

我想写getter,并希望每次调用getter时都返回相同的对象。这是我的代码。Swift 3 getter方法

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

编译器给出了错误 使用未解决的标识符“_someObject” 我怎样写在斯威夫特3正确的getter方法?

回答

2

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

雨燕相当于是一个慵懒的计算性能

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

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

+0

不一样。这意味着你不能将变量设置为零,并自动重新计算 - 这是一个强大的设计模式。 – gnasher729

+0

@ gnasher729我没有写它是一样的,它相当于* ...每当我打电话时返回相同的对象* – vadian

0

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