Edit Diff Annotate History
Upload
List
Recent
Alias
Top
Help
EOKVCImplementation : Edit
Last updated: Fri Mar 30 22:07:46 +0900 2007
!Key-Value Codingの仕組み !!属性の検索 KVCはキーに対するアクセサメソッドとインスタンス変数を順に検索します。 メソッド名・変数名はコーディングスタイルや目的によって名前が微妙に異なることがありますが、KVCではそれを考慮して次の複数のパターンを候補にします。 * キーと同名 * キーの接頭辞に =get= をつける * キーの接頭辞に =is= をつける ここからさらに「接頭辞にアンダースコアがつくか」「メソッドかインスタンス変数か」の各パターンを検索します (※ドキュメントではアンダースコアがつかないアクセサを「パブリック」、つくアクセサを「プライベート」としています。 ここではJava言語仕様の可視性と区別するため、単にアンダースコアの有無とします)。 まとめると次の順序で検索されます。 #アンダースコアのつかないメソッド(=getKey(), key(), isKey()=) #アンダースコアのつくメソッド(=_getKey(), _key(), _isKey()=) #アンダースコアのつくインスタンス変数(=_key, _isKey=) #アンダースコアのつかないインスタンス変数(=key, isKey=) !!キーが見つからないとき どのメソッド・インスタンス変数も見つからない場合、NSKeyValueCoding.ErrorHandlingインターフェースを実装(implements)していれば =handleQueryWithUnboundKey()=, =handleTakeValueForUnboundKey()= が呼ばれます。 デフォルトの実装では例外NSKeyValueCoding.UnknownKeyExceptionが発生するようになっています。