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

同じではありません。つまり、変数をnilに設定することはできず、自動的に再計算されます。これは非常に強力な設計パターンです。 – gnasher729

+0

@ gnasher729私はそれが同じであると書いていない、それは*と同じ* – vadian

0

スウィフトではsomeObjectという名前のプロパティに_someObjectという名前のバッキング変数がありません。 はもちろん、独自のプライベート変数_someObjectを宣言することもできます。利点として、getterがnilを返すことは決してないので、someObjectをオプションとして宣言する必要はありません。

関連する問題