【发布时间】:2012-12-18 04:50:08
【问题描述】:
我创建了一个 BaseRequest 类,它具有符合 BaseParams 协议的属性。 接下来我创建了一个继承自 BaseRequest 的 DiagramReqesut 类,它的类型也是 DiagramParam 符合 BaseParams 协议的属性。
我认为编译是安全的,但 xcode 仍然警告: 属性类型“DiagramParams *”与继承自“BaseRequest”的类型“id”不兼容
我想知道为什么。
这里有简化的演示:
BaseRequest.h
@interface BaseRequest
@property (nonatomic,retain) id<BaseParams> params;
@end
@protocol BaseParams <NSObject>
- (NSMutableDictionary *)getParamsDict;
@end
图表请求.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
【问题讨论】:
标签: objective-c compiler-warnings