替换采用特定协议的类(Objective-c)

时间:2011-09-21 22:29:35

标签: objective-c ios protocols

在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吗?

1 个答案:

答案 0 :(得分:3)

不。当API明确地以这种方式输入时,可以互换地使用符合相同协议的不同类的实例,例如:

- (void)someMethod:(id <MyProtocol>)someObj;