我创建了一个BaseRequest类,它具有一个符合BaseParams协议的属性。 和接下来我创建了一个从BaseRequest继承的DiagramReqesut类,它有一个类型为DiagramParam的属性也符合BaseParams协议。属性类型''与继承自''的类型''不兼容''
我认为这是编译安全的,但仍Xcode中警告说: 房产类型“DiagramParams *”是类型“ID”不兼容从“BaseRequest”继承
我不知道为什么。
简化演示是在这里:
BaseRequest.h
@interface BaseRequest
@property (nonatomic,retain) id<BaseParams> params;
@end
@protocol BaseParams <NSObject>
- (NSMutableDictionary *)getParamsDict;
@end
DiagramRequest.h
@interface DiagramRequest : BaseRequest
//warning: Property type 'DiagramParams *' is incompatible with type 'id<BaseParams>' inherited from 'BaseRequest'
@property (nonatomic,retain) DiagramParams *params;
@end
@interface DiagramParams : NSObject <BaseParams>
@property (nonatomic) int id;
@property (nonatomic,retain) NSString *city;
- (NSMutableDictionary *)getParamsDict;
@end
它的工作原理,谢谢〜 – Feather