以下是否有区别:
懒变量:
lazy var profileImageIsLoaded : Bool = {
return (profileImageView.image != nil) && (profileImageProgressView.alpha == 0.0)
}()
Run Code Online (Sandbox Code Playgroud)
功能:
func profileImageIsLoaded() -> Bool {
return (profileImageView.image != nil) && (profileImageProgressView.alpha == 0.0)
}
Run Code Online (Sandbox Code Playgroud)
计算物业:
var profileImageIsLoaded : Bool {
return (profileImageView.image != nil) && (profileImageProgressView.alpha == 0.0)
}
Run Code Online (Sandbox Code Playgroud)
什么方法最好用?
我会多次调用函数/变量,所以我的问题也是懒惰变量是否"更新"或者它们是否只获得一次值.
Swe*_*per 20
lazy vars实际上是存储的属性,因此您不能将其放在扩展中或不允许存储属性的任何位置.lazy vars 的getter 仅在首次引用属性时运行,而不再运行.lazy vars是变量.你可以改变它们.()在获取其值时添加.Mo *_*eed 10
第一个:
lazy var profileImageIsLoaded : Bool = {
return (profileImageView.image != nil) && (profileImageProgressView.alpha == 0.0)
}()
Run Code Online (Sandbox Code Playgroud)
profileImageIsLoaded 是一个存储属性,使用闭包进行懒惰初始化,一旦初始化变量,就不再调用此闭包,并且将返回第一次调用闭包时所花的值.
第二个:
func profileImageIsLoaded() -> Bool {
return (profileImageView.image != nil) && (profileImageProgressView.alpha == 0.0)
}
Run Code Online (Sandbox Code Playgroud)
是正常的函数声明,这只是声明.如果你想调用那个函数,你会这样做:profileImageIsLoaded().
第三个:
var profileImageIsLoaded : Bool {
return (profileImageView.image != nil) && (profileImageProgressView.alpha == 0.0)
}
Run Code Online (Sandbox Code Playgroud)
profileImageIsLoaded 是一个计算属性,每次访问此属性时,都会计算并返回它.
选择使用哪一个总取决于您的情况.
| 归档时间: |
|
| 查看次数: |
3352 次 |
| 最近记录: |