Подставляя классы, которые принимают определенный протокол (Objective-c) - PullRequest
1 голос
/ 22 сентября 2011

В 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 Ответ

3 голосов
/ 22 сентября 2011

Неа.Экземпляры разных классов, которые соответствуют одному и тому же протоколу, могут использоваться взаимозаменяемо, хотя API-интерфейс явно указан таким образом, например:

- (void)someMethod:(id <MyProtocol>)someObj;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...