オブジェクトの小さなコレクションを追跡するために、オブジェクト ファクトリに取り組んでいます。オブジェクトはさまざまなタイプにすることができますが、それらはすべて および に応答しcreateInstance
ますreset
。NSView
オブジェクトの一部は、 や などの組み込みココア クラスから派生する必要があるため、共通の基本クラスからオブジェクトを派生させることはできませんNSWindowController
。
次のように、目的のクラス名をファクトリに渡すだけで、適切なオブジェクトのインスタンスを作成できるようにしたいと考えています。
myClass * variable = [factory makeObjectOfClass:myClass];
メソッドは次のmakeObjectOfClass:
ようになります。
- (id)makeObjectOfClass:(CLASSNAME)className
{
assert([className instancesRespondToSelector:@selector(reset)]);
id newInstance = [className createInstance];
[managedObjects addObject:newInstance];
return newInstance;
}
(CLASSNAME)className
上記の引数で行ったように、クラス名をメソッドに渡す方法はありmakeObjectOfClass:
ますか?
完全を期すために、すべてのオブジェクトを管理する理由を次に示します。を呼び出して、オブジェクトの完全なセットをワンショットでリセットできるようにしたいと考えています[factory reset];
。
- (void)reset
{
[managedObjects makeObjectsPerformSelector:@selector(reset)];
}