Установите определения интерфейса для категории, если методы категории вызываются из другого класса - PullRequest
0 голосов
/ 05 октября 2019

Допустим, у меня есть класс Альфа и категория Альфа + дополнительные функции с методом - (void) foo . Другой класс, скажем, Beta , должен вызывать метод foo.

Мне нравится использовать категории для разбиения кода на части, чтобы Alpha.m не был большим файлом. Должен ли я поместить описание включает и интерфейс?? 1011 *

Я пытался:

файл Alpha.h ——————————

@interface Alpha {
...
}

-(void) foo;

файл Альфа.m ——————————

#import „Alpha.h“

file Alpha + morefeatures.h --------------

#import "Beta.h"

@interface Alpha (morefeatures)

файл Alpha + morefeatures.m --------------

#import Alpha+morefeatures.h

@implementation Alpha (morefeatures)

-(void)foo {
...
}

файл Beta.h ——————————-

#import „Alpha.h“

Alpha + morefeatures.h не импортируется нигде, кроме как в Alpha + morefeatures.m. Он компилируется (и работает хорошо), но выдает следующие предупреждения компилятора:

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

«Определение метода не найдено»

Как мне избавиться от предупреждений? Я видел некоторые ответы, которые касаются опций компилятора, но я предполагаю, что это скорее проблема синтаксиса.

Любой совет приветствуется.

1 Ответ

0 голосов
/ 11 ноября 2019

Я наконец нашел способ: все, что мне нужно сделать, это добавить описание интерфейса в Alpha.h

@interface Alpha (morefeatures)  
  -(void)foo; 
@end

Затем импортировать Alpha.h в бета.ч

...