我正在使用 Xcode 5.1 版、iOS SDK 7.1 版运行。以下是同一个文件中的一些示例声明:
@protocol A <NSObject>
@end
@protocol B <A>
@end
@interface SomeObject : NSObject <B>
@end
@interface SomeContainer : NSObject
- (id<A>)pop;
@end
Xcode 在以下代码中生成警告:
SomeContainer *container = [[SomeContainer alloc] init];
SomeObject *obj = [container pop]; // Warning: Initializing 'SomeObject *__strong' with and expression of incompatible type 'id<A>'
我知道类型转换会消除警告,但是,我不明白我为什么需要它。SomeObject 必须实现协议 A 中声明的任何内容。我缺少什么吗?任何解释将不胜感激。