温馨提示:本文最后更新于
2024-07-27 14:04:55
,某些文章具有时效性,若有错误或已失效,请在下方留言。懒加载是统性能优化的方式之一。
懒加载闭包
基本语法,如下所示
lazy var yourVariableName: SomeType = {
return SomeType(whatever: "foobar")
}()
懒加载闭包代码示例
class Singer {
let name: String
init(name: String) {
self.name = name
}
lazy var reversedName = {
return "\(self.name.uppercased()) backwards is \(String(self.name.uppercased().reversed()))!"
}()
}
let taylor = Singer(name: "Taylor Swift")
print(taylor.reversedName)
reversedName
属性现在是懒惰的,这意味着只有当我们第一次读取 reversedName
属性时,闭包内部的代码才会被执行。
懒加载方法
我们可以创建方法,将懒属性与它们所依赖的代码分离开来。
class Singer {
let name: String
init(name: String) {
self.name = name
}
lazy var reversedName = self.getReversedName()
private func getReversedName() -> String {
return "\(name.uppercased()) backwards is \(String(name.uppercased().reversed()))!"
}
}
let taylor = Singer(name: "Taylor Swift")
print(taylor.reversedName)
懒加载单例
class MusicPlayer {
init() {
print("Ready to play songs!")
}
}
class Singer {
static let musicPlayer = MusicPlayer()
init() {
print("Creating a new singer")
}
}
let taylor = Singer()
Singer.musicPlayer
所有 Swift static let
单子都是自动懒惰的,只有在需要时才会创建。
– 《Pro Swift》
© 版权声明
THE END
暂无评论内容