2014-03-29 45 views
0

從蘋果公司的文件,我碰到了以下內容:核心價值編碼澄清

使用關鍵路徑的設定值是不一樣的使用 Objective-C的屬性設置它們。您不能使用財產符號來設置 變換值。您必須使用前面的鍵路徑字符串 的setValue:forKeyPath:方法。

從我的理解,我們必須有我們的ivars的屬性才能使用KVC。

不過從上面的一段,似乎另有說:

使用關鍵路徑設定值是不一樣的爲使用 Objective-C的屬性設置它們。您不能使用財產符號來設置 變換值。

有人可以向我解釋爲什麼嗎?也許我錯過了一些東西,因爲一直以來我的理解是我們必須有屬性才能使用KVC。

+1

我認爲這是行不通的:'setValue:value forKey:@「view.transform'。你必須使用'setValue:value forKeyPath:@ view.transform'。 –

+0

@ScottBerrevoets你的意思是沒有雙引號,但保留** @ **符號? – Unheilig

+0

對不起,我的部分錯別字。我的意思是'forKeyPath'部分,而不是'forKey'。 –

回答

1

從我的理解,我們必須有我們的ivars的屬性才能使用KVC。

這是不正確的。 KVC將使用屬性生成的訪問器方法或其他(適當命名的)訪問器方法(如果存在的話),但它們不是必需的。如果它們不存在,KVC將嘗試直接訪問實例變量。

檢查this Apple ref瞭解KVC如何搜索要更新的密鑰。

+0

謝謝,但什麼是_「..其他(適當命名)訪問器方法」_?你能舉一個例子嗎? – Unheilig

+1

僅用於設置集合:方法實際上是有效的,然後按照該順序匹配模式_ ,_is ,的實例變量名稱。 – Wain