1

我的 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 是否已经通过优化为我做这件事?

4

0 回答 0