从类内部的任何地方但在函数内部拒绝属性编辑

时间:2017-04-13 11:36:15

标签: swift

有没有办法限制在类中设置属性而不是函数?以下是用于说明问题的代码:

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 个答案:

答案 0 :(得分:1)

我不相信有任何语言机制允许你这样做。您可以将private用于其他不使用该类的类。

如果你关心那么多,你可以为该属性制作一个包装类,但我相信这比它的价值更麻烦。

通常,这是一个让名为_property的属性声明它是私有的或在上面添加注释的好地方。