NSDictionaryのKeyに自作のクラスを使う場合は以下の3つの実装が必要。
- (id)copyWithZone:(NSZone*) zone
- (BOOL)isEqual:(id)object
- (NSUInteger)hash
copyWithZoneはKeyはコピーされてNSDictionaryに保存されるため、インスタンスのクローン処理を実装する必要がある。
hashとisEqualはobjectForKeyでNSDictionaryからValueを取得時に使われる。
まずhashが用いられ、その後isEqualが呼ばれる。
実装はhashはインスタンスごとに一意なhash値を返すことと、isEqualはインスタンスが同じかどうかの判定を行う。
0 件のコメント:
コメントを投稿