2012-04-13 2 views
2

Возможно ли реализовать цепочку протоколов?Цепочка протокола

Например, я определяю новый протокол (ProtocolA), и я хотел бы, чтобы убедиться, что он может быть применен только к объектам, которые соответствуют ProtocolB. Так что-то вроде ...

@protocol ProtocolA <NSObject<ProtocolB>> 
@end 

Вопрос

Допускает ли цель C этот тип поведения? Если нет шаблона проектирования, о котором я должен знать, чтобы добиться аналогичного эффекта?

ответ

4

Вместо использования вписанные протоколов (который является неправильная форма), просто отделить каждый отдельный протокол с запятой, как так:

@protocol ProtocolA <NSObject, ProtocolB> 
@end 

Это совершенно законно. Фактически в этих строках объявляется несколько сотен протоколов UIKit.

+0

Спасибо за ответ. Я действительно пробовал это поздно прошлой ночью, но я столкнулся с некоторыми ошибками сборки (22, если быть точным: P). Тем не менее, мне показалось немного странным, что вы сможете использовать предоставленный вами синтаксис (т. Е. NSObject - это фактический класс, а протокол ProtocolB - это протокол, определенный пользователем). Я попытаюсь сделать этот подход еще одним выстрелом позже сегодня. – dpalmajr

+0

Это малоизвестный факт, что NSObject также является протоколом! Как вы думаете, вы можете позвонить + alloc? – CodaFi

+0

Ваше право. Не знаю, как я это пропустил. Спасибо за помощь, ваш ответ сделал трюк. – dpalmajr

Смежные вопросы