Swift只读外部,内部读写属性
在Swift中,定义公共模式的常规方式是什么,在该模式中,属性是外部只读的,但可以由拥有该属性的类(和子类)在内部进行修改。
在Objective-C中,有以下选项:
- 在接口中将该属性声明为只读,并使用类扩展名在内部访问该属性。这是基于消息的访问,因此可以很好地与KVO,原子性等配合使用。
- 在接口中将该属性声明为只读,但在内部访问后备ivar。由于对ivar的默认访问受到保护,因此在类层次结构中效果很好,在该类层次结构中,子类也可以修改值,但该字段为只读。
在Java中,约定为:
- 声明一个受保护的字段,并实现一个公共的只读getter(方法)。
Swift的成语是什么?
回答:
给定一个类属性,您可以通过在属性声明的前面加上access修饰符,然后在括号之间get
或set
括号之间指定不同的访问级别。例如,具有公共获取器和私有设置器的类属性将声明为:
private(set) public var readonlyProperty: Int
建议阅读:Getters和Setters
Martin关于可访问性级别的考虑仍然有效-
即没有protected
修饰符,internal
仅将对模块的访问限制为仅对private
当前文件的访问,并且public
没有任何限制。
斯威夫特3笔记
2个新的访问修饰符,fileprivate
并且open
已添加到语言中,而private
和public
已稍作修改:
open
仅适用于类和类成员:用于允许对类进行子类化或在定义它们的模块之外重写成员。public
而是使类或成员可公开访问,但不能继承或覆盖private
现在使成员仅从封闭的声明中可见并可以访问,而fileprivate
对于包含该成员的整个文件
更多细节在这里。
以上是 Swift只读外部,内部读写属性 的全部内容, 来源链接: utcz.com/qa/417716.html