Swift-属性

2020-12-11  本文已影响0人  lieon

属性

struct Circle {
    // 存储属性
    var radius: Double
    // 计算属性
    var diameter: Double {
        set {
            radius = newValue / 2
        }
        get {
            radius * 2
        }
    }
}

存储属性

计算属性

延迟存储属性(Lazy Stored Property)

class PhotoView {
    lazy var image: Image = {
        let url = "https://www.520it.com/xx.png"
        let data = Data(url: url)
        return Image(data: data)
    }()
}

属性观察器(Property Observer)

struct Circle {
    var radius: Double {
        willSet {
            print("willSet", newValue)
        }
        didSet {
            print("didSet", oldValue, radius)
        }
    }
    init() {
        self.radius = 1.0
        print("Circle init!")
    }
}

inout的本质总结


func test(_ num: inout Int) {
    num = 20
}
var num = 10
test(&num)

类型属性(Type Property)

 struct Car {
     static var count: Int = 0
     init() {
         Car.count += 1
     }
 }
 let c1 = Car()
 let c2 = Car()
 let c3 = Car()
 print(Car.count) // 3
上一篇 下一篇

猜你喜欢

热点阅读