2011-05-17 27 views
3

我有一個應用程序,我正在工作,它有一些相互依賴的數據。基本上,我有一組數字字段用於計算其他數字字段,然後用於計算其他字段。我正在嘗試確定處理潛在的大量更改的最佳方法。有沒有更簡單的方法來處理在iOS應用程序中更改的多條數據?

我想到的一個解決方案是,我可以覆蓋可由用戶修改的值的setter,以執行計算,然後適當地更新數據對象中的其他值。這個最大的缺點是需要編寫大量的(有些模板的)代碼。

我想到的另一個解決方案是使用鍵值觀察來處理數據更改,然後從這些更改中更新相關值。請注意,除非獨立值更新,否則所有依賴值都不會更新。雖然我認爲這樣會更加優雅,但我擔心潛在的性能問題或者我可能沒有考慮到的問題。

有沒有第三種方法,我失蹤了?這類工作是否有最佳做法?我知道我可能不得不寫一些樣板的樣板代碼 - 我希望代碼是最容易維護的代碼,並且可能的代碼量最小。

+0

如果人們想知道,我在類似但仍然明顯不同的環境中有很多經驗 - Java。對於iOS生態系統,我還是比較陌生,我試着感受我的方式,並找到最佳/推薦的方式來確保我的軟件儘可能保持可靠和正確。 – aperkins 2011-05-17 13:58:43

+0

如果有人在將來看到這個問題 - 我繼續前進,並做了Key-Value觀察,因爲這對我來說是最簡單的工作,而且我不想使用完整的通知系統。 – aperkins 2011-05-26 03:39:37

回答

1

KVO不應該有任何性能問題,除非你有很多領域或非常頻繁的更新,但其API不是最大的。一個缺點是,它通過單一方法漏斗所有通知。這可能會或可能不會成爲問題,具體取決於您的數量和字段類型。

Notifications也可能是一個不錯的選擇。每個字段都可以有一個通知名稱,用於發佈更改,而其他字段可以在沒有顯式指向源字段的指針的情況下觀察。

還有delegation with protocols雖然更簡單,更高性能,但它可能更像樣板文件,這取決於您的操作方式。

+0

是的,我想避免委託協議,只是因爲它周圍的樣板代碼。我會看看通知 - 但謝謝你的提示! – aperkins 2011-05-25 14:52:57

相關問題