swift 中的私有变量

tHa*_*art 5 ios swift

创建类时,这两种创建自定义类的实现在安全性方面有什么区别?就我使用它们而言,它们的工作原理完全相同,但听说使用私有变量是创建类的正确方法

class Person {

    var name:String
    var age:Int

    init(name: String, age: Int){
        self.name = name
        self.age = age
    }
}
Run Code Online (Sandbox Code Playgroud)

class Person {

    private var _name: String
    private var _age: Int

    var name: String {
        set {
            self._name = newValue
        } get {
            return _name
        }
    }

    var age: Int {
        set {
            self._age = newValue
        } get {
            return _age
        }
    }

    init(name: String, age: Int){
        self._name = name
        self._age = age
    }
}
Run Code Online (Sandbox Code Playgroud)

PGD*_*Dev 7

private绝对建议使用,但仅在您希望为您的财产提供这种隐私的情况下使用。

您的第二个代码不确保任何类型的隐私。这只是添加了更多不必要的代码。

可能存在这样的情况:您希望将写访问权限保留为类型 ( class/struct) 的私有,并允许类型外部的读访问权限。为此,您可以private(set)在属性中使用访问修饰符,即

class Person {
    private(set) var name: String
    private(set) var age: Int

    init(name: String, age: Int){
        self.name = name
        self.age = age
    }
}
Run Code Online (Sandbox Code Playgroud)