Это должно работать так, как вы это описали. Вы уверены, что больше ничего не происходит?
Есть ли Class1.h #import Class2.h?
Обновление:
Если Class1.h также импортирует Class2.h, то у вас есть цикл зависимости заголовка:
Class1.h импортирует Class2.h
Class2.h импортирует Class1.h
Вот проблема:
- Компилятор начинает работать на Class1.h
- Он встречается в строке: `#import" Class2.h "
- Он открывает Class2.h и начинает там работать
- Находит строку:
#import Class1.h
- Он игнорирует эту строку (чтобы избежать бесконечного цикла)
- Выдает ошибку, потому что Class2.h требует вещи из Class1.h, которые еще не скомпилированы
То, как вы решите, действительно зависит от вас, но этот тип петли является признаком того, что с вашим дизайном что-то не так. Быстрое исправление может быть следующим:
Class1.h
@protocol Class1Delegate <NSObject>
@required
-(NSArray*) someMethod;
@end
#import "Class2.h" // moved here to avoid a cyclic dependency
@interface Class1 : NSObject
...
Вы просто перемещаете #import
строку после протокола, который был объявлен.