提供摘錄中的「局部常量和變量」是指局部作用域常量和變量,就像函數的局部變量一樣。它們不會引用對象的屬性,如果它們使用lazy關鍵字進行標記,則這些屬性可能是懶惰的。
//global, declared outside of a class/struct
//error is "Lazy is only valid for members of a struct or class
lazy var label: UILabel = {
var tempLabel: UILabel = UILabel()
tempLabel.text = "hi"
return tempLabel
}()
class SomeClass : NSObject {
//non-lazy instance property
var x = 3
//lazy instance property
lazy var label: UILabel = {
var tempLabel: UILabel = UILabel()
tempLabel.text = "hi"
return tempLabel
}()
func doStuff() {
//error is "Lazy is only valid for members of a struct or class
lazy var label: UILabel = {
var tempLabel: UILabel = UILabel()
tempLabel.text = "hi"
return tempLabel
}()
}
}
是什麼對象的屬性和「全局常量和變量」之間的區別? – grossmae
@grossmae我的編輯與例子清除差異? –
@grossmae對不起,我仍然在編輯。你可以擁有全局變量,在你的類之外聲明,總是很懶。你可以在你的類上有靜態的,這些都是懶惰的,你可以在你的方法中有局部變量,這些變量永遠不會懶惰,也不可能,你可以擁有可以懶惰或不可以的實例屬性。 –