美文网首页Swift工作笔记
Swift—属性—readOnly

Swift—属性—readOnly

作者: Windv587 | 来源:发表于2016-11-29 18:14 被阅读323次

    *存储属性*

    * 具备存储功能,和OC中普通属性一样

    *  属性观察器

    * 属性观察器监控和响应属性值的变化,每次属性被设置值的时候都会

    * 用属性观察器

    * 类似于OC中的setter

    * 可以为除了延迟存储属性之外的其他存储属性添加属性观察器

    * willSet

    * 在新的值被设置之前调用

    * willSet观察器会将新的属性值作为常量参数传入

    * 传入的参数默认名称newValue

    * didSet

    * 在新的值被设置之后立即调用

    * didSet观察器会将旧的属性值作为参数传入

    * 传入参数默认参数名oldValue

    * 注意:如果在一个属性的didSet观察器里为它赋值,这个值会替换之前设置的值

    var title:String? {

    didSet{

    ''      title = name! + "欢迎回来"

    ''    }

    }

    *计算属性*

    * 计算属性不具备存储功能

    * 相当于OC中的readOnly(不完全是)

    * 最常见的计算属性:

    > * 只有get没有set(只读计算属性)

    > * 重写了set但没有给自身赋值也是计算属性

    * 注意:

    * 必须使用var关键字定义计算属性,包括只读计算属性,因为它们的值不是固定的。let关键字只用来声明常量属性,表示初始化后再也无法修改的值

    var age:Int{

    ''    // 如果只重写了get,没有set. 那么属性是一个"计算型"属性

    ''    get{

    ''        return 30

    ''    }

    '' }

    '' // 如果只有get可以简写为

    '' var gender:String{

    ''    return "lnj"

    '' }

    *存储属性和实例变量*

    * Objective-C 为类实例存储值和引用提供两种方法。除了属性之外,还可以使用实例变量作为属性值的后端存储

    * Swift 编程语言中把这些理论统一用属性来实现, 这就避免了不同场景下访问方式的困扰

    * Swift 中的属性没有对应的实例变量,属性的后端存储也无法直接访问

    var \_name:String?

    var name:String?{

    '' get{

    ''        return _name

    ''    }

    ''  set{

    ''        _name = newValue

    ''    }

    }

    相关文章

      网友评论

        本文标题:Swift—属性—readOnly

        本文链接:https://www.haomeiwen.com/subject/ntczpttx.html