2015-06-05 27 views
1
[self.toolController bind:@"fillColor" toObject:self.fillColorWell withKeyPath:@"color" options:kvoDict]; 

可可綁定,我應該使用KVO嗎?

[self.fillColorWell addObserver:self.toolController forKeyPath:@"color" options:NSKeyValueObservingOptionNew context:nil]; 

,並在我的toolController類,在我實施-observeValueForKeyPath:...

if([keyPath isEqual:@"color"]) { 
    self.fillColor = [object selectedObject]; 
} 

我爲什麼會選在另外一個方法來獲取更新到我的模型屬性的看法?

回答

0

對於綁定,您必須編寫的唯一代碼是綁定本身,就是這樣。使用KVO,您必須編寫代碼來處理通知。如果你的綁定UI和使用Interface Builder,那麼你根本不需要任何代碼,這對於更簡單的事情可以是有用的/節省時間+你不必通用寫入鍋爐板代碼來保持事物同步會迴應KVO通知。

我已經閱讀過,否則,但我的理解(我做了一個快速的新項目來驗證)綁定是在兩個方向。所以說,如果你將文本字段綁定到NSString,那麼當文本字段被更新時變量會發生變化,並且你可以更改變量和文本字段更新。 KVO只會在您指定更新的對象上通知您。

有些人說綁定的壞處,他們不是iOS的一部分等等,但他們適用於簡單的情況,所以也許你應該去綁定,直到你找到他們不適合的情況。不過話說回來,如果你想在某個時候把你的代碼到iOS版...

希望那是一個足夠好的答案你:)

+0

一些綁定是一種方法,但允許讀寫屬性綁定到一個只讀的。 readonly屬性仍然可以顯示綁定。 KVO很煩人,因爲目前沒有像autoUnbinder和ARC這樣的自動'removeObserver',而不使用'removeObserver'會導致真正的問題。 – stevesliva

相關問題