快速私有变量

问题描述 投票:0回答:1

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

class Person {

    var name:String
    var age:Int

    init(name: String, age: Int){
        self.name = name
        self.age = age
    }
}

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
    }
}
ios swift
1个回答
0
投票
绝对建议使用

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
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.