十九、Swift3.0之getter和setter 、计算型和只读属性

说明:Swift实际开发中一般不会重写setter和getter方法,这里仅供参考和了解。

class Person: NSObject {
    //getter和setter  
    //仅供延时,日常开发不用
    var _name: String?
    var name: String?{
        get{
            //返回成员变量
            return _name
        }
        set{
            //设置成员变量
            _name = newValue
        }
    }
     

    //只读属性的一般写法
    var title: String{
        //只重写了get方法,没重写set方法,所以外界不能赋值,只能是只读属性
        get{
            return "Mr" + (name ?? "")
        }
    }
    
    //只读属性的简写 
    //又称为计算型属性,本身不保存内容,每一次都是通过计算获取结果。
    //类似于一个函数:没有参数,但一定有返回值
    var title2: String{
        return "Mr" + (name ?? "")
    }
}

这里顺便说一下懒加载和计算型属性的区别:
计算型属性:

  • 不分配独立的空间保存计算结果
  • 每次通过 self.属性名 都会执行
  • 像是一个函数,不过这个函数不能接受参数,但是有返回值

懒加载:
-在第一次调用时,执行闭包并且分配空间存储闭包返回的竖直

  • 会分配独立的存储空间
  • 和OC不同的是,lazy修饰的属性即使被置为nil也不会再次调用

你可能感兴趣的:(十九、Swift3.0之getter和setter 、计算型和只读属性)