我正在开发一个对象工厂来跟踪一小部分对象。对象可以是不同的类型,但它们都会响应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)];
}