所以,我有這種情況,其中var3
的值取決於var1
和var2
。基本上,這可以翻譯成兩種形式:From Performance Wise:Class Computed Property vs Stored Property
A)使用計算的屬性VAR3
class bla {
var var1: Int = 0
var var2: Int = 0
var var3: Int {
return var1 * var2
}
}
B)使用存儲屬性與屬性觀察員既VAR1和VAR2
class bla {
var var1: Int = 0 {
didSet {
var3 = var1 * var2
}
}
var var2: Int = 0 {
didSet {
var3 = var1 * var2
}
}
var var3: Int = 0
}
但是,在我必須處理這個問題的情況下,變量是在UITableViewCell中使用的巨大模型對象的所有部分。在這種情況下使用它,它確實需要儘可能高效,這就是我試圖遠離使用這種情況下計算屬性的原因..原因,據我所知,當Swift獲取var3的值在下一個類執行,它將在運行中計算其值,而不是像B類實現那樣緩存。對? (是否以任何方式快速緩存計算屬性的值?)
現在我真的想知道最好的方法是什麼。事實上,我將這些變量中的一部分遷移到模型對象中,而不是在單元內動態計算它們,是爲了從單元中獲取負載並儘可能平滑地進行滾動,這就告訴我們使用計算的屬性使我的努力毫無意義。另一方面,我發現其中一個變量依賴於3〜4個其他變量的情況,這使得當每個值發生變化時都需要重新計算它,這也是無效的。
任何建議?我做錯了嗎?
你真的* *覺得變量的訪問性能的關鍵部分的碼?一般來說:你多久寫一次var1和var2,多久讀一次var3?我個人不會擔心這部分,直到你*看到*切斷性能問題。先讓它工作,然後重構,否則你會大量過度工程。 – luk2302
好吧。他們只是簡單的例子。事實是,將該邏輯移入模型對象級別,在表視圖性能方面確實做了一些改進,我覺得如果將它們作爲計算屬性,我會鬆動它。 – Mamouneyya