Я работаю над объектом factory, чтобы отслеживать небольшую коллекцию объектов. Объекты могут быть разных типов, но все они будут реагировать на createInstance
и reset
. Объекты не могут быть получены из общего базового класса, потому что некоторые из них должны будут выводиться из встроенных классов cocoa, таких как NSView
и NSWindowController
.
Я хотел бы иметь возможность создавать экземпляры любого подходящего объекта, просто передав нужное имя класса моему factory следующим образом:
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:
выше?
Для полноты, вот почему я хочу управлять всеми объектами. Я хочу, чтобы reset полный набор объектов в один кадр, вызывая [factory reset];
.
- (void)reset
{
[managedObjects makeObjectsPerformSelector:@selector(reset)];
}