2016-11-27 71 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。