NSClassFromString Идея - PullRequest
       34

NSClassFromString Идея

2 голосов
/ 01 августа 2011

В настоящее время я пытаюсь создать объекты из метода NSClassFromString (NSString *).

То, чего я хочу достичь, это следующее ...

NSClassFromString(stringType) *pageController = nil;

Вместо следующего ...

UIViewController *pageController = nil;

Другими словами, вместо использования UIViewController я хочу использовать правильный класс. Я хочу быть в состоянии достичь вышеупомянутого без необходимости набирать точный класс. Обычно я писал бы это следующим образом, но из-за расширения приложения его нужно изменить.

MPLandscapeImage *pageController = nil;

Возможно ли это, и если да, как я могу завершить то, что нужно?

Ответы [ 3 ]

3 голосов
/ 01 августа 2011

Да.Сделай это.

Class cls = NSClassFromString(stringType);
// You have to use id here
id pageController = nil;
// And later
pageController = [[cls alloc] init];
0 голосов
/ 01 августа 2011

Вы пытаетесь использовать дженерики / шаблоны в Objective C. Не сработает.Вместо этого используйте тип id, он гораздо более применим к тому, что вы пытаетесь сделать.

0 голосов
/ 01 августа 2011

Вы не можете этого сделать.Вы можете использовать тип идентификатора для этого.

Однако я хотел бы спросить, чего вы пытаетесь достичь, потому что обход системы типов часто является плохой идеей (тм).

...