在Objective-c中,如果两个类采用特定协议,那么类的实例可以互换使用吗?
说我有以下代码:
@protocol MyProtocol
@required
@property (nonatomic, retain) SomeObject *object;
@end
@interface ClassA <MyProtocol>
@property (nonatomic, retain) SomeObject *object;
// ...
@end
@interface ClassB <MyProtocol>
@property (nonatomic, retain) SomeObject *object;
// ...
@end
当方法需要(id <MyProtocol>)instanceOfClassB
的实例?
ClassA
吗?
答案 0 :(得分:3)
不。当API明确地以这种方式输入时,可以互换地使用符合相同协议的不同类的实例,例如:
- (void)someMethod:(id <MyProtocol>)someObj;