您的位置:首页 >> APPLE >> 和屌丝一起学SWIFT-属性
和屌丝一起学SWIFT-属性
[ 孤狼 | 2016-04-25 21:04:15 | APPLE ]

声  明

       本教程仅用于初学SWIFT同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用SWIFT版本为2.0。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。PAEA.CN版权所有。


Hello,欢迎回到和屌丝一起学SWIFT系列教程中来,上节我们说了类和结构体,不知道大家有没有学会呢?它们可是很重要的哦,记得一定好好好复习哦.这节我们来一起学习一个和它们相关的东西-属性.这节也很重要,因为你以后会经常用到这些.


属性


属性分为存储属性和计算属性.顾名思义,存储属性用来存储数据,计算属性用来参与计算.


[存储属性]

存储属性就是用来保存数据的属性,大类分为常量存储属性及变量存储属性.分别使用 var 和 let 来定义.(这里和变量的定义基本一致)

struct A{
    var a1=0;
    let a2=100;
}
var b1=A();
print(b1.a2);   //输出"100"
b1.a2=800;      //报错,因为a2属性使用的是let定义的常量无法修改
let b2=A();
b2.a1=800;      //报错,因为b2是一个常量,所以就算他的属性是变量,也无法修改.

 

[延迟存储属性]

延迟存储属性,也就是属性会延迟创建,这算是一个区别于其他语言的特点.我们使用 lazy 关键字来定义一个延迟存储属性.这里需要注意的是,因为属性会后期赋值,所以必须使用变量方式来定义(var).延迟存储属性只有在被调用的时候,才会开始创建.可以把耗时较长的方法设置为延迟.避免第一次加载时耗时过长.

class C{
    lazy var str="我延迟了";
}

 

 

[计算属性]

计算属性不用来存储数据,而是通过计算得出变量.计算属性,需要通过getset方法来进行获取和设置.其中set方法可以舍去,成为只读计算属性.

TIP:get方法中最后一定要使用return来返回,否则报错.

struct D{
    var num=0;
    var fun:Int{
        get{
            return num+10;
        }
        set(newNum){
            num=newNum;
        }
    }
}
var d=D();
print(d.fun);   //输出"10"
d.num=10;       //通过直接修改方法设置
print(d.fun);   //输出"20"
d.fun=30;       //通过set方法设置
print(d.fun);   //输出"40"

 

 

[属性观察器]

属性观察器监控和响应属性值的变化,每次属性被设置值的时候都会调用属性观察器,甚至新的值和现在的值相同的时候也不例外。

属性观察器有两种,willSetdidSet,即设置前和设置后.

struct E{
    var num=0{
        willSet{
            print(num);
        }
        didSet{
            print(num);
        }
    }
}
var e=E();
e.num=10;
//输出:"0","10"

 

点击下载本节代码

转载请注明出处:http://gl.paea.cn/apple/content/2016/04/25/91.html