前言
Swift的set、get方法不像ObjC那样简单明了,下面我们就来细细分析下。
步骤
- 1、只重写get方法,不写set方法,默认为readOnly
public var number: Int{
get{
return 1;
}
}
- 2、Swift 中我们 不能使用 _c 来表示 OC 中@property 修饰的变量值
var number : Int{
get{
//1、不能写成number或者self.number都会造成crash,原因不用多说大家都懂的,死循环
//2、不能像ObjC那样写成return _number
//3、不能写成return number 或者return self.number
return 1;
}set{
//写上 self.number = newValue 和 不写都会造成crash
//而且 不能像ObjC中写上 ObjC
//number = newValue造成crash 原因是方法的死循环
let a = newValue;
print(a);
}
}
- 3、由于2提到的原因重写的时候,我们使用额外的一个变量来重写
var _number :Int = 0
var number : Int{
get{
return _number;
}set{
_number = newValue;
}
}
是不是和ObjC比较相似
- 4、Swift中使用了willset 和 didSet这2个特性,来见识属性的除初始化之外的属性值变化
var number : Int = 0{
didSet{
//UI 操作
}
willSet{
}
}
- 5、懒加载写法
lazy var titleLab : UILabel = {
return UILabel.init();
}()
网友评论