2009-10-26 25 views
13

我想知道這個方法返回的參數是什麼。observeValueForKeyPath的參數:ofObject:change:context:

- (void) observeValueForKeyPath:(NSString *)keyPath 
         ofObject:(id)object 
         change:(NSDictionary *)change 
         context:(void *)context; 

the documentation它說

的keyPath的關鍵路徑,相對於對象,以已改變的值。

object key path keyPath的源對象。

變化描述所已作出的屬性的值 在關鍵路徑 的keyPath相對於到物體的變化的詞典。

上下文當接收機被註冊到 這是所提供的值接收鍵值觀察 通知。

你可能可以爲我解釋這些參數,因爲我發現文檔有點難以理解。

回答

13

當您註冊KVO通知時,您指定了一個到addObserver:的關鍵路徑。 keypath參數只是將這個值返回給你。對象參數是您向其發送消息的對象。這些可用於區分不同鍵路徑/對象的KVO通知(例如,如果您正在觀察多個值)。

change是一個字典,其中包含有關價值變化性質的信息。它可能包含新值或舊值,或者對於一對多關係,它可能包含已更改的索引。其內容在KVO Programming Guide接收變更通知部分中有更好的描述。

當您註冊通知時,您還可以指定上下文值。最後一個值就是這個值返回給你。如果您沒有任何特定於上下文的信息,則將nil傳遞給addObserver:是適當的。

有關國際志願者組織系統的一些不足之處(和一些輔助類來解決這些問題)商量好了,看到Mike Ash's great blog post

+1

只要注意有關國際志願者組織聯繫,它已經搬到了這裏:https://developer.apple .COM /庫/ MAC /文檔/可可/概念/ KeyValueObserving/KeyValueObserving.html – 2013-10-02 19:47:37

相關問題