Как использовать одну и ту же категорию в нескольких классах? - PullRequest
2 голосов
/ 02 августа 2010

У меня есть категория стека для NSMutableArray, который я использую в классе A

@implementation NSMutableArray (StackUtil)

- (void)push:(id)stackObject {

 [self addObject:stackObject];
}
- (id)pop {

 id retVal = [[self lastObject]retain];
 [self removeLastObject];
 return [retVal autorelease];
}

@end

Как правильно включить эту категорию для класса B, который не связан с классом A? Также я заметил, что когда я # импортирую класс A в заголовок для класса C, методы категории работают, но я получаю предупреждение «объект может не отвечать на push-сообщение». Может кто-нибудь выяснить, как категории «повторно используются» и почему у них есть имена (в данном случае StackUtil) и как они используются.

1 Ответ

6 голосов
/ 02 августа 2010

У вас должен быть соответствующий @interface NSMutableArray (StackUtil) в заголовочном файле, который объявляет категорию.Импортировать этот заголовок должно быть достаточно, чтобы назначить использование ваших новых методов любому NSMutableArray в области импорта.

@interface NSMutableArray (StackUtil)
- (void) push:(id)stackObject;
- (id) pop;
@end

Конечно, @interface и обычно @implementation должнысобственные файлы, независимые от ваших классов A, B и C, поскольку они являются дополнениями общего назначения, а не чем-то принадлежащим к одному из этих клиентских классов.

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