Я попытался закомментировать импорт делегата и увидел, где возникла ошибка, и обнаружил, что то, что я импортировал, когда импортировал делегат, на самом деле было декларацией, которую импортировал делегат, т.е. я импортировал A (также мой делегат), A импортировал B, то, что я фактически использовал, было B. Поэтому я оставил импорт A закомментированным и добавил импорт для B. Затем я мог вернуть порядок протокола импорта обратно, как это было.

я дваview controllers A а такжеBи они оба имеют друг друга в качестве своих делегатов.

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

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

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

@class A

вместо

#import A.h

внутри#import B.h

Я попробовал почти все комбинации этого импорта, и@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

Ответы на вопрос(6)

Ваш ответ на вопрос