2012-02-27 47 views
1

我碰到的國際志願者組織的一個令人沮喪的特點:所有通知都是通過一個單一的方法(observeValueForKeyPath:....)漏斗,需要一堆IF語句如果對象正在觀察許多屬性。鍵 - 值觀察 - 尋找一個更優雅的解決方案,以應對價值變化

理想的解決方案是通過一種方法作爲參數傳遞給它建立在第一時間的觀察方法,但似乎這是不可能的。這個問題是否存在解決方案?我最初考慮使用keyPath參數(addObserver:forKeyPath:options:context:)通過NSSelectorFromString調用一個方法,但後來我跨過柱KVO Dispatcher pattern with Method as context和它鏈接的文章來這爲了傳遞參數沿,以及提供不同的解決方案(雖然我還沒有得到了那個工作呢)。

我知道很多人都遇到了這個問題。是否有標準的處理方式出現?

+0

有基於塊的國際志願者組織的多種不同的實現在那裏,你可以用一個簡單的谷歌找到。 – 2012-02-28 00:29:44

+1

https://github.com/ReactiveCocoa/ReactiveCocoa是一種特別新穎的方法,可以使價值觀察變得更加笨拙。 – ipmcc 2013-06-17 14:03:34

回答

1

OP問:

具有處理就出現一個標準的方式?

不,不是真的。那裏有很多不同的方法。這裏有一些:

我不能說我見過的任何選項似乎都足以贏得「標準方式」的稱號。我懷疑大多數人會覺得有動力去克服這個問題,只需選擇一個並隨意使用它,或者自己寫 - 它並不像調整KVO使用基於塊的回調是火箭科學。您鏈接到的基於方法的方法似乎不是向前邁進的簡單方法。我得到你想要採取基於字符串的鍵路徑<的不確定性 - >方法轉換出來的公式,但那種跌倒了,因爲不是所有觀察到的鍵/ keyPaths的方法。 (如果沒有別的,你可以觀察NSMutableDictionaries上的任意鍵並獲得通知。)

如果蘋果發佈一個新的基於塊的KVO API,那肯定會很好,但我並沒有屏住呼吸。但同時,就像我說的,只需選擇一個你喜歡的,並使用它或寫你自己的,並使用它。

相關問題