2017-04-13 38 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的房产标志着它是私人的或在上面添加评论。