我的 EnvironmentObject 中有一个数组,可以驱动我的一些视图。现在我需要该数组的更新函数。有些元素可能会改变,有些可能不会。
我是否应该首先检查每个元素是否“需要”更新并且只在需要时才写入数组,还是我是否过度考虑它,因为 Swift / SwiftUI 将优化不会实际更改数据的写入操作?
这是一个例子:
func newValue(forIndex index: Int) -> Double {
if index % 5 == 0 {
return Double(index) + 0.5
}else {
return Double(index)
}
}
var array = Array(stride(from: 0.0, to: 1_000_000.0, by: 1))
for i in 0..<array.count {
let new = newValue(forIndex: i)
if new != array[i] {
array[i] = new
}
}
或这个...
for i in 0..<array.count {
array[i] = newValue(forIndex: i)
}
补充说明: 我试图避免不必要的数据写入和 UI 更新。我的意思是,如果一个数组元素已经是 2.0,我不想通过再次将其设置为 2.0 来将其“更改”为 2.0,并且我当然不想在这种情况下导致重绘。我是否必须自己进行这种避免检查,或者 Swift 是否已经通过优化为我做这件事?