2015-02-24 7 views
0

У меня есть функция, которая дает мне обратно Класс:Как создать экземпляр объекта из сохраненного класса?

- (Class)classForMyType:(NSString *)myType; 

Этот класс возвращается, как это:

return [MyFirstClass class]; 

В коде, где я называю эту функцию, я могу хранить класс как это:

Class myClass = [self classForMyType:@"foo"]; 

Как я могу создать экземпляр переменной в типе myClass? Я хочу что-то вроде myClass *foo = [[myClass alloc] init], но это не работает.

+1

если я понимаю ваш вопрос здесь это: http://stackoverflow.com/questions/1174093/create-objective-c-class-instance-by-name – kocakmstf

+0

Вы правы, я могу создать объект с помощью 'id foo = [[myClass alloc] init] ; ', но таким образом указатель не будет иметь соответствующий класс. Возможно ли иметь указатель на класс? – gklka

+0

с [[NSClassFromString (@ "NameofClass") alloc] init]; вы можете создать экземпляр с именем. то, если вы хотите, вы можете разобрать этот класс на свой класс, поскольку я знаю – kocakmstf

ответ

1

Вы можете создать его таким образом, если используете строку.

id object = [[NSClassFromString(@"NameofClass") alloc] init]; 

Основываясь на вашем коде, похоже, что вы не набираете тип своего класса. Либо создать его экземпляр, как это с идентификатором

id foo = [[myClass alloc] init] 

Или явно тип литом, как это (уведомление MyClass не переменная экземпляра, но ваше реальное имя класса):

MyClass *foo = [[myClass alloc] init] 
+0

Если бы я знал точное имя класса в этот момент, я бы не создал функцию для его возврата :) – gklka

+0

lol yeah thats, что я понял, но я положил его на всякий случай. Я не думаю, что это возможно сделать то, что вы хотите. Я думаю, что самое лучшее, что вы можете сделать, это создать экземпляр своего родительского класса, если вы точно это знаете, но кроме этого я не думаю, что вы можете сделать это без id, но я буду продолжать смотреть! – Chase

+0

Листинг в правой части задания ничего не делает. Вам никогда не нужно указывать выражение типа id на другой тип объекта. – jlehr

Смежные вопросы