//------------------------//
/*
注意点
1:willSet得注意大小写,写错了,不认识,而且还没有书写提示。
2:存储属性只要合法,不用指明类型或者初始值,都可以加willSet.
3:即使是相同的值,也会调用
4:willSet和didSet只能用于存储属性。set和get只能用于计算属性,但没有只写属性。
*/
/*8,和Int64一样,8个字节。*/
print(sizeof(Int))
class OnlyOneCalculateProperty:NSObject{
var PropertyName:Int{
get{
return 30
}
set(NewValue){
print(NewValue)
}
}
}
/*16。可见计算属性不占存储空间,和没有一样大小。计算属性set和get里面要注意死循环哈~!*/
print(class_getInstanceSize(OnlyOneCalculateProperty))
class OnlyOneStoreProperty:NSObject{
var PropertyName:Int = 0{
willSet(newValue){
print("将要设定age,原值:\(PropertyName),新值:\(newValue)")
}
didSet(oldValue){
print("将要设定age,原值:\(oldValue),新值:\(PropertyName)")
}
}
}
/*24。可见存储属性占用存储空间,多了8字节。*/
print(class_getInstanceSize(OnlyOneStoreProperty))
class Person:NSObject{
var age:Int = 30 {
willSet(newValue){
print("将要设定age,原值:\(age),新值:\(newValue)")
}
didSet(oldValue){
print("将要设定age,原值:\(oldValue),新值:\(age)")
}
}
var Weight:Int{
get{
print("获取Weight属性值:\(75)")
return 75
}
set(newValue){
print("设置Weight属性值:\(newValue)")
}
}
}
/*计算属性可以被子类覆盖,存储的不可以哦~!*/
class Student: Person{
override var Weight: Int{
get{
print("获取Weight属性值:\(70)")
return 70
}
set(newValue){
print("设置Weight属性值:\(newValue)")
}
}
}
let P = Person()
P.Weight = 80
print(P.Weight)
let S = Student()
S.Weight = 80
print(S.Weight)
[swift学习之十四]计算属性和存储属性
最新推荐文章于 2024-06-27 12:11:08 发布