Цель C: как наследовать методы категории, загруженные в родительский класс?

В моем проекте я использую категорию NSObject+Properties.h (см. aqtoolkit: https://github.com/AlanQuatermain/aqtoolkit/blob/master/Extensions/NSObject%2BProperties.h)

Затем у меня есть класс, который я объявляю как

#import <Foundation/Foundation.h>
#import "NSObject+Properties.h"

@interface GFDictionaryInitiable : NSObject
...

Затем у меня есть несколько подклассов GFDictionaryInitiable, таких как GFRestaurant:

#import <Foundation/Foundation.h>

#import "GFDictionaryInitiable.h"

@interface GFRestaurant : GFDictionaryInitiable
...

Моя проблема в том, что я не могу получить доступ к методам, определенным в категории NSObject+Properties в моих подклассах. Например, я получаю сообщение об ошибке:

-[GFRestaurant hasPropertyNamed:]: unrecognized selector sent to instance 0x2e57240

Как сделать так, чтобы все мои подклассы «наследовали» методы категории, загруженные в родительский класс?


person jd.    schedule 17.10.2013    source источник
comment
Вы уверены, что NSObject+Properties.m добавлен к вашей цели?   -  person Martin R    schedule 17.10.2013
comment
Он должен работать. Вы уверены, что ваш файл .m включен в вашу цель? Перейдите к Build Phases > Compiled Sources и посмотрите, есть ли там NSObject+Properties.m.   -  person Pedro Mancheno    schedule 17.10.2013


Ответы (2)


Поскольку вы получаете исключение времени выполнения, а не ошибку компилятора, я предполагаю, что вы забыли добавить "NSObject+Properties.m" к своей цели. Выберите файл и установите флажок «Целевое членство» в инспекторе файлов.

person Martin R    schedule 17.10.2013

Просто добавь:

#import "NSObject+Properties.h"

в ваши подклассы .h файлы.

person Owen Hartnett    schedule 17.10.2013
comment
У него нет проблем с компиляцией, поэтому я не верю, что это решит его проблему. - person Pedro Mancheno; 17.10.2013
comment
Да. Вероятно, ответ Мартина правильный, но на всякий случай он неверно сообщает о предупреждении компилятора. - person Owen Hartnett; 17.10.2013