假设在OriginalObject.h
中定义了这样的类:
@protocol OriginalDelegate;
@interface OriginalObject : NSObject {}
@property (nullable, nonatomic, weak) id<OriginalDelegate> delegate;
@end
@protocol OriginalDelegate <NSObject>
// … delegate method declarations …
@end
现在,在ExtendedObject.h
中,我想这样做:
#import "OriginalObject.h"
@protocol ExtendedDelegate;
@interface ExtendedObject : OriginalObject {}
@property (nullable, nonatomic, weak) id<ExtendedDelegate> delegate;
@end
@protocol ExtendedDelegate <OriginalDelegate>
// … additional delegate method declarations …
@end
尝试这样做会在@property … delegate;
的{{1}}行上给我以下警告:
ExtendedObject.h
似乎编译器不知道Property type 'id<ExtendedDelegate> _Nullable' is incompatible with type 'id<OriginalDelegate> _Nullable' inherited from 'OriginalObject'
将符合ExtendedDelegate
。将完整协议声明移至OriginalDelegate
的{{1}}接口上方可以解决以下警告:
ExtendedObject
我想知道的是... 有什么方法可以在向前声明中告诉编译器 ExtendedObject.h
将符合#import "OriginalObject.h"
@protocol ExtendedDelegate <OriginalDelegate>
// … additional delegate method declarations …
@end
@interface ExtendedObject : OriginalObject {}
@property (nullable, nonatomic, weak) id<ExtendedDelegate> delegate;
@end
< / strong>(可以使用上面的ExtendedDelegate
的第一个版本)?
以下任何这样的前向声明尝试似乎都不是有效的语法:
OriginalDelegate