2009-05-19 2 views

ответ

1

Я подозреваю, что вам не нужно делать то, что вы хотите сделать, но без особых подробностей невозможно точно знать. Поскольку Objective-C является языком с поздним связыванием, редко требуется подклассификация для целей тестирования. Вместо этого взгляните на class categories или рассмотрите редизайн, чтобы вы могли пройти тестовый двойной (или заглушку, подделку или макет) с помощью параметра типа 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 Runtime Reference. Если я найду время, я проведу код и отправлю его здесь.

+0

Привет, Барри, мне любопытно, как это можно сделать в образовательных целях, а не практично. Любая идея как? – Boon

+0

Да, я добавил дорожную карту для ее выполнения с использованием среды выполнения Objective-C 2.0. Если у меня будет время, я напишу/протестирую код и отправлю его. –

Смежные вопросы