Lazyiable
因此,您在 Swift 中声明了一个 lazy var
,认为它会像 Objective-C 中的即时实例化变量一样表现。您本以为将它们设置为 nil
,将在需要时重建它们。
您怎么这么可怜。
它们不会.
为什么不以非常轻量级的方式将那种美妙带回到 Swift 中呢?
规范
- iOS 9+
- watchOS 3+
- tvOS 9+
- watchOS 3+
- macOS 10.10+
- Swift 4.2+
使用
根据提供的三种方法之一声明您的 Lazy
变量
建议:为了获得最佳效果,声明您的 Lazy
变量时请使用 let
。
class TestClass
{
let lazyString = §{
return "testString"
}
let lazyDouble: Lazy<Double> = Lazy {
return 0.0
}
let lazyArray = Lazy {
return ["one", "two", "three"]
}
}
访问您的变量
let testObject = TestClass()
print(testObject.lazyString§) //prints out "testString"
将您的变量设置为 nil
,以便以后重新构建
let testObject = TestClass()
testObject.lazyDouble §= nil
运算符
前缀运算符 §
Lazy
变量的简写构造函数
let lazyThing = §{
return <#code#>
}
后缀运算符 §
Lazy
的简写访问器
let lazyString = §{
return "Much cool"
}
print(lazyThing§) //prints out "Much cool"
中缀运算符 §=
Lazy
的简写赋值
let lazyString = §{
return "Much cool"
}
lazyString §= nil //the string "Much cool" has been destroyed
print(lazyThing§) //reconstructs the string and prints out "Much cool"
注释
为获得最佳结果,在声明Lazy
变量时使用let
。
同时,确保在Lazy
变量构造函数中捕获self
时使用[weak self]
或。
安装
Cocoapods
pod 'Laziable', '~> 1.1'
然后,在需要的位置导入import Laziable
。
Carthage
github "BellAppLab/Laziable" ~> 1.1
然后,在需要的位置导入import Laziable
。
Swift Package Manager
dependencies: [
.package(url: "https://github.com/BellAppLab/Laziable", from: "1.1.0")
]
然后,在需要的位置导入import Laziable
。
Git Submodules
cd toYourProjectsFolder
git submodule add -b submodule --name Laziable https://github.com/BellAppLab/Laziable.git
然后,将Laziable
文件夹拖动到您的Xcode项目中。
作者
Bell App Lab, [email protected]
致谢
Logo 图片由 The Noun Project 上的 Georgiana Ionescu 提供
许可
CocoaPods 以 MIT 许可证提供。有关更多信息,请参阅 LICENSE 文件。