Swift工作笔记

Swift—属性—readOnly

2016-11-29  本文已影响323人  Windv587

*存储属性*

* 具备存储功能,和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

''    }

}

上一篇 下一篇

猜你喜欢

热点阅读