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

Objective c 采用特定协议的替换类(目标-c),objective-c,ios,protocols,Objective C,Ios,Protocols,在Objective-c中,如果两个类采用特定的协议,那么这些类的实例是否可以互换使用 假设我有以下代码: @protocol MyProtocol @required @property (nonatomic, retain) SomeObject *object; @end @interface ClassA <MyProtocol> @property (nonatomic, retain) SomeObject *object; // ... @end @interfac

在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
@protocol-MyProtocol
@必需的
@属性(非原子,保留)SomeObject*对象;
@结束
@接口类别A
@属性(非原子,保留)SomeObject*对象;
// ...
@结束
@接口类B
@属性(非原子,保留)SomeObject*对象;
// ...
@结束

当一个方法需要一个
ClassA
实例时,我是否可以替换
(id)instanceOfClassB

否。当API以这种方式显式类型化时,符合相同协议的不同类的实例可以互换使用,例如:

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