@interface T2IdentifiedObject : NSObject <T2DictionaryConverting>
サブクラス:T2ListFace, T2List, T2ThreadFace, T2Thread
T2IdentifiedObjectは、そのオブジェクトのinternalPathに対応するオブジェクトが常に一つであるオブジェクトの基底クラスです。Thousand2chフレームワークを用いた2chブラウザの場合、同一のスレッドや板に対応するインスタンスは常に一つであることが要求されます。そのためのメカニズムを提供しているのがT2IdentifiedObjectクラスです。
オブジェクトの生成と破棄
- +(id)objectWithInternalPath:(NSString *)internalPath ;
- internalPathを持つインスタンスを生成するファクトリメソッドです。すでに当該internalPathを持つインスタンスがある場合はそれを返します。
- -(id)initWithInternalPath:(NSString *)internalPath ;
- internalPathを持つインスタンスを生成する初期化メソッドです。すでに当該internalPathを持つインスタンスがある場合はそれを返します。
- +(id)availableObjectWithInternalPath:(NSString *)internalPath ;
- すでに当該internalPathを持つインスタンスがある場合のみ、それを返します。
- +(NSMutableDictionary *)dictionaryForIndentify ;
- internalPathと対応するインスタンスを結びつけるNSMutableDictionaryを返します。サブクラスはこのメソッドをオーバーライドし、それぞれの辞書を持つことが出来ます。例えば、T2ThreadFaceとT2Threadはその対応関係のために同じinternalPathを使用しますが、当然それぞれのクラスで同じinternalPathが対応するインスタンスは別物です。
アクセッサ
- -(void)setInternalPath:(NSString *)internalPath ;
- internalPathを設定します。通常直接このメソッドを呼ぶことはありません。
- -(NSString *)internalPath ;
- internalPathを返します。
- -(void)setExtraInfo:(NSDictionary *)dic ;
- 追加情報を格納するNSDictionaryを設定します。通常直接このメソッドを呼ぶことはありません。
- -(NSDictionary *)extraInfo ;
- 追加情報を格納するNSDictionaryを返します。
- - (void)setValue:(id)value forUndefinedKey:(NSString *)key ;
- KVCのメカニズムを通じて、アクセッサの無いプロパティについてもextraInfoに格納することが出来ます。これによって、プラグインはT2ThreadやT2Listなどをサブクラス化すること無く、独自の情報を格納することが出来ます。使用の際はこのメソッドでなく、setValue:forKey:を呼ぶのが通常です。
- - (id)valueForUndefinedKey:(NSString *)key ;
- KVCのメカニズムを通じて、アクセッサの無いプロパティについてextraInfoから返します。
オーバーライド
- -(unsigned)hash ;
- T2IdentifiedObjectのhashは、そのinternalPathのhashを返します。
- -(BOOL)isEqual:(id)anObject ;
- T2IdentifiedObjectのisEqual:は、同一クラスだった場合そのinternalPathを比較します。