2011-09-21 15 views
1

在Objective-c中,如果两个类采用特定协议,那么这些类的实例可以互换使用?替换采用特定协议的类(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一个实例?

回答

3

没有。符合相同协议的不同类别的实例可以在以这种方式明确键入API时互换使用,例如:

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