NSClassFromString работает для строковых литералов, возвращает ноль для созданных строк - PullRequest
3 голосов
/ 08 октября 2010

Я пытаюсь создать экземпляр типа на основе другого типа, переданного в метод.Я считаю, что NSClassFromString прекрасно работает, если используется со строковым литералом, как в

id instance = [[NSClassFromString(@"TheNameOfTheClassIWant") alloc] init];

, но если я строю строку с чем-то вроде

NSString *inClassName = [[protoInstance class] description];
NSString *outClassName = [inClassName stringByAppendingFormat:@"IWant"];
id instance = [[NSClassFromString(outClassName) alloc] init];

, то instancenil.NSClassFromString работает только с литералами?Что-то происходит во время компиляции, чтобы заставить NSClassFromString работать?

Ответы [ 3 ]

0 голосов
/ 08 октября 2010

Единственное, о чем я могу думать, это [описание класса] сомнительно.Используйте NSStringFromClass, чтобы убедиться, что вы получили то, что хотите?

0 голосов
/ 08 января 2013

Убедитесь, что класс включен в Фаза сборки вашей цели.У меня была та же проблема - класс был исключен из фазы сборки из-за несвязанного изменения.

0 голосов
/ 08 октября 2010

У меня никогда не было проблем с использованием этого звонка (да, он мне нужен только несколько раз).

у Вас есть:

  • проверено, что outClassName является ли буква идеальной (с учетом регистра)?
  • проверено, что пакет / класс загружен? Вы можете выделить / инициализировать класс, используя стандартный подход?
  • проверил, что вывод NSClassFromString' - just to ensure that init` не возвращает 0 (в качестве одного примера)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...