Не удается найти объявление протокола

У меня есть два контроллера представления A и B , и они оба имеют друг друга в качестве своих делегатов.

Когда я ничего не сделал, кроме определения протоколов в начале файлов заголовков и #import другого заголовочного файла, я получил две ошибки в строках -

не может найти декларацию протокола для "BDelegate", которая отображалась в A.h (где я писал) не может найти декларацию протокола для «ADelegate», который отображался в B.h (где я писал)

Глядя в Интернете, люди писали ранее, что циклическое включение файлов заголовков может привести к проблемам. Они рекомендовали либо использовать вместо #include , либо @class объявление типа -

@class A

вместо

#import A.h

внутри #import Bh

Я пробовал почти все комбинации этого импорта и @classes и #include , но все еще не может избавиться от предупреждений. Кроме того, онлайн-решения рекомендовали переместить #import в файлы .m , но это тоже не помогло. Отчасти причина в том, что онлайн-решения довольно нечеткие - если бы вы могли их разбить, это было бы здорово.

Есть ли предложения о том, что можно сделать, чтобы исправить это?


- BigViewController.h -

#import "BaseViewController.h"
#include "BaseViewController.h"

@class BigViewController;

@protocol BigViewControllerDelegate
-(void) BigViewController:(BigViewController *) bigView;
@end

@interface BigViewController : UIViewController <BaseViewControllerDelegate>
{    
     //delegate
     id <BigViewControllerDelegate> delegate;

ivars...    
}

@properties...
@end

--------------------------------------------------

] - BaseViewController.h -

#<UIKit/UIKit.h>

#import "BigViewController.h"
#include "BigViewController.h"

@class BigViewController;

@protocol BaseViewControllerDelegate
- (void) setParametersWithItemChosen:(Item *) item;
@end

@interface BaseViewController : UIViewController <...BigViewControllerDelegate...>
{

   ivars...

   //delegate
    id <BaseViewControllerDelegate> delegate;
}

@properties...
@end
59
задан casillas 22 September 2015 в 16:14
поделиться