Преобразовать строку (& ldquo; MyExampleClass & rdquo;) в имя класса (MyExampleClass)

Чтобы восстановить все эти удаленные файлы в папке, введите следующую команду:

git ls-files -d | xargs git checkout --
29
задан Josh Caswell 18 April 2012 в 18:53
поделиться

4 ответа

Вот что вам нужно:

Class theClass = NSClassFromString(classNameStr);
id myObject = [[theClass alloc] init];

Обратите внимание, что вы не можете использовать theClass в качестве имени типа (т. Е. theClass *myObject). Для этого вам придется использовать id.

76
ответ дан Alex 18 April 2012 в 18:53
поделиться

Требуется NSClassFromString:

NSString *classNameStr = @"MyExampleClass";
Class theClass = NSClassFromString(classNameStr);
id myObject = [[theClass alloc] init];

Вы также можете использовать интерфейсы среды выполнения objc (например, objc_getClass(const char* name), objc_lookUpClass(const char* name)). Первый не будет загружать класс. Последний будет. Этот вариант может быть хорошим в некоторых случаях.

23
ответ дан justin 18 April 2012 в 18:53
поделиться
id a = [[NSClassFromString(@"MyExampleClass") alloc] init];

используйте это, это даст вам то, что вы хотите.

6
ответ дан Ishu 18 April 2012 в 18:53
поделиться

Если вы пытаетесь динамически создавать свои классы, я рекомендую вам лучше взглянуть на шаблон проектирования фабричных методов, иначе вы потеряете представление о том, кто что строит и как.

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

Взгляните на книгу Эриха Гамма «Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения»; Ричард Хелм; Ральф Джонсон; Джон Влиссидес.

1
ответ дан David 18 April 2012 в 18:53
поделиться