Как динамически создать подкласс класса и создать экземпляр класса в Objective C? - PullRequest
1 голос
/ 19 мая 2009

Я хочу динамически создать подкласс класса (скажем, NSString) и создать его экземпляр для целей тестирования. Как я могу сделать это в Objective C?

1 Ответ

1 голос
/ 19 мая 2009

Я подозреваю, что вам не нужно делать то, что вы хотите сделать, но без каких-либо подробностей невозможно узнать наверняка. Поскольку 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 . Если я найду время, я протестирую некоторый код и опубликую его здесь.

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