No se puede encontrar la declaración de protocolo
Tengo dosview controllers A
yB
, y ambos se tienen como delegados.
Cuando no hice nada excepto definir los protocolos al comienzo de los archivos de encabezado y#import
el archivo de encabezado del otro, obtuve dos errores en la línea de -
no se puede encontrar la declaración de protocolo para "BDelegate", que se mostraba en A.h (donde escribí) no se puede encontrar la declaración de protocolo para "ADelegate", que se mostraba en B.h (donde escribí)
Mirando en línea, la gente había escrito anteriormente que la inclusión circular de los archivos de encabezado podría estar causando problemas. Recomendaron usar#include
en cambio, o@class
declaración como -
@class A
en lugar d
#import A.h
dentro#import B.h
He intentado casi todas las combinaciones de estas importaciones, y@classes
y#include
pero aún así no puedo deshacerme de las advertencias. Además, las soluciones en línea recomiendan mover el#import
al.m
archivos pero eso tampoco ayudó. Parte de la razón es que las soluciones en línea son un poco confusas; si pudiera desglosarlas, sería genial.
¿Alguna sugerencia sobre qué se puede hacer para solucionar esto?
- 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