Чтобы ответить на настоящий вопрос: добавить объект Class
в словарь просто:
[dict setObject:[TestClass class] forKey:@"key"];
И я делаю это часто, без каких-либо проблем.Тем не менее, вы, кажется, хотите добавить незаконченный объект класса.В документации говорится:
Когда вы закончите сборку класса, вызовите objc_registerClassPair.Новый класс теперь готов к использованию.
Так, может быть, ваш Class
объект еще не "готов к использованию"?
обновление после некоторых тестов:
вам нужно вызвать objc_registerClassPair
, чтобы использовать Class
в качестве фактического объекта.Вызов retain
до этого времени приведет к EXC_BAD_ACCESS
.
Если вы хотите создать классы в цикле и зарегистрировать их на более позднем этапе, просто отметьте указатели, используя:
[classDict setObject:[NSValue valueWithPointer:customClass] forKey:name];
просто распакуйте их, используя Class customClass = [value pointerValue];
.После регистрации вы, конечно, можете использовать Class
объекты как обычно.