2017-04-13 3 views
0

クラス内でプロパティを設定するのを制限する方法はありますか?問題を説明するコードは次のとおりです。クラス内のどこからでもプロパティの編集を拒否する

import UIKit 

class MyViewController: UIViewController { 
var property: Int? 

func setProperty(_ property: Int?, animated: Bool, 
       withColor color: UIColor, 
       andSomethingElse something: Any) { 
    // only allow property to be set here 
    self.property = property 

    // ... 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // What I'd like to achieve is deny following... 
    property = 42 

    // ...and somehow force to set value exclusively via function 
    setProperty(42, 
       animated: true, 
       withColor: .green, 
       andSomethingElse: LongCat()) 
} 
} 

答えて

1

私はあなたにそれを可能にする言語の仕組みはないと思います。ほかのクラスにはprivateを使用しないでください。

それほど気になる人なら、そのプロパティのラッパークラスを作ることができますが、これは価値があるよりも面倒です。

通常、これは_propertyという名前のプロパティをプライベートであることを伝えたり、上記のコメントを追加するのに適した場所にするのに適しています。

関連する問題