我正在尝试创建几个协议,其中大多数都引用了其他协议。但是在构建过程中我遇到了错误。
我举个例子:
#import <Foundation/Foundation.h>
@protocol DataChildDelegate <NSObject>
@property(nonatomic) id<DataParentDelegate> parent;
@end
@protocol DataParentDelegate <NSObject>
@property(nonatomic) id<DataChildDelegate> firstChild;
@property(nonatomic) id<DataChildDelegate> lastChild;
@end
我尝试将 DataChildDelegate 划分为两部分,如下所示:
#import <Foundation/Foundation.h>
@protocol DataChildDelegate <NSObject>
@end
@protocol DataParentDelegate <NSObject>
@property(nonatomic) id<DataChildDelegate> firstChild;
@property(nonatomic) id<DataChildDelegate> lastChild;
@end
@protocol DataChildDelegate <NSObject>
@property(nonatomic) id<DataParentDelegate> parent;
@end
但是这次我收到警告。
有没有更合适的方法来处理这个问题?
由于
答案 0 :(得分:2)
您应该在DataChildDelegate
之前使用协议DataParentDelegate
的前向声明,以便编译器可以信任它存在。
例如:
#import <Foundation/Foundation.h>
@protocol DataChildDelegate; /*Forward declaration of DataChildDelegate */
@protocol DataParentDelegate <NSObject>
@property(nonatomic) id<DataChildDelegate> firstChild;
@property(nonatomic) id<DataChildDelegate> lastChild;
@end
@protocol DataChildDelegate <NSObject>
@property(nonatomic) id<DataParentDelegate> parent;
@end