Я подозреваю, что вам не нужно делать то, что вы хотите сделать, но без каких-либо подробностей невозможно узнать наверняка. Поскольку Objective-C является языком с поздним связыванием, создание подклассов для целей тестирования редко требуется. Вместо этого взгляните на категории классов или рассмотрите возможность редизайна, чтобы вы могли пройти двойной тест (либо заглушку, фальшивку, либо макет) через параметр типа id
или соответствующий протоколу. *
Для интереса вы можете использовать objc_allocateClassPair(Class superclass, const char *name, size_t extraBytes)
для выделения нового класса. Вы можете добавлять методы, используя class_addMethod(Class cls, SEL name, IMP imp, const char *types)
и ivars с class_addIvar(Class cls, const char *name, size_t size, uint8_t alignment, const char *types)
. Наконец, вы должны зарегистрировать новый класс, используя objc_registerClassPair(Class cls)
. Узнайте больше в Справочнике по * Objective-C 2.0 . Если я найду время, я протестирую некоторый код и опубликую его здесь.