2009-07-28 3 views
1

у меня есть:взаимозависимые объекты, вызывающие ошибки компилятора

@interface A 
@property (nonatomic, retain) B *toB; 
@end 

@interface B 
@property (nonatomic, retain) A *toA; 
@end 

Это заставляет компилятор дать мне это:

ошибка: ожидается спецификатор-квалификатор-лист перед «Недвижимость»

Теперь, это похоже, это имеет отношение к порядку разбора файлов как независимо, они работают до тех пор, пока объявленный объект объявлен первым.

Как я могу обойти это?

ответ

2

Использовать форвардную декларацию через @class, чтобы компилятор знал, что существует класс с именем A, которого он еще не видел.

Например:

@class A; 
@class B; 

@interface A 
@property (nonatomic, retain) B *toB; 
@end 

@interface B 
@property (nonatomic, retain) A *toA; 
@end 
+1

Нет необходимости вперед-объявить здесь, только Б. уже объявлен время он используется в декларации Б. – smorgan

+0

Спасибо, я чувствовал, что это будет что-то вроде этого :-) – mjmdavis

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