BaseRequest クラスを作成しました。これには、BaseParams プロトコルに準拠したプロパティがあります。次に、BaseRequest から継承した DiagramReqesut クラスを作成しました。このクラスには、DiagramParam 準拠の BaseParams プロトコルを型とするプロパティもあります。
コンパイルしても安全だと思いますが、xcode は引き続き次のように警告します。
なぜだろう。
簡易デモはこちら:
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