从性能的角度来看,请考虑以下代码:
var someBool: Bool {
get {
//in theory a function here
return true
}
}
var anotherBool: Bool = {
//same function here
return true
}()
假设两者都使用相同的函数来计算布尔值返回值,那么使用一个函数与另一个函数是否会带来某种形式的性能收益?有没有建议的方法可以考虑?
答案 0 :(得分:4)
此
var anotherBool: Bool = {
//same function here
return true
}()
是一个闭包,它是第一次执行,然后再次调用时存储在anotherBool
中的值,而
var someBool: Bool {
get {
//in theory a function here
return true
}
}
是一个计算属性,每次调用此var时都会调用它,并且每次调用都会执行,因此,如果内容是动态的,则使用计算属性,否则闭包就足够了如果您使用计算的话,将会产生性能问题,即再次运行假定产生相同结果的代码