EOKVCImplementation

2007/03/30 (Fri) 22:07:46 JST

Key-Value Codingの仕組み

属性の検索

KVCはキーに対するアクセサメソッドとインスタンス変数を順に検索します。 メソッド名・変数名はコーディングスタイルや目的によって名前が微妙に異なることがありますが、KVCではそれを考慮して次の複数のパターンを候補にします。

ここからさらに「接頭辞にアンダースコアがつくか」「メソッドかインスタンス変数か」の各パターンを検索します (※ドキュメントではアンダースコアがつかないアクセサを「パブリック」、つくアクセサを「プライベート」としています。 ここではJava言語仕様の可視性と区別するため、単にアンダースコアの有無とします)。 まとめると次の順序で検索されます。

  1. アンダースコアのつかないメソッド(getKey(), key(), isKey()
  2. アンダースコアのつくメソッド(_getKey(), _key(), _isKey()
  3. アンダースコアのつくインスタンス変数(_key, _isKey
  4. アンダースコアのつかないインスタンス変数(key, isKey

キーが見つからないとき

どのメソッド・インスタンス変数も見つからない場合、?NSKeyValueCoding.?ErrorHandlingインターフェースを実装(implements)していれば handleQueryWithUnboundKey(), handleTakeValueForUnboundKey() が呼ばれます。 デフォルトの実装では例外?NSKeyValueCoding.?UnknownKeyExceptionが発生するようになっています。


Inverse Pages: WebObjects基礎研究室