Синтаксис для нескольких протоколов

Что такое синтаксис Objective-C для нескольких протоколов?

Ответы

Ответ 1

Не могли бы вы рассказать о своем вопросе? В противном случае это правильный способ объявить класс, соответствующий нескольким протоколам. Вы указываете протоколы, которые соответствует классу после объявления суперкласса в заголовочном файле классов.

@interface MyClass : MySuperClass <Delegate1, Delegate2, Delegate3> {
     //instance variables
}

//properties

//methods

Ответ 2

Вы можете выполнить несколько протоколов двумя способами:

Метод 1

@protocol p1 <NSObject>
-(void)M1
-(void)M2
@end

@protocol p2 <NSObject>
-(void)M3
-(void)M4
@end

@interface MyViewController () <p1,p2>

Метод 2

@protocol p1 <NSObject>
-(void)M1
-(void)M2
@end

@protocol p2 <NSObject,p1>
-(void)M3
-(void)M4
@end

@interface MyViewController () <p1>

Ответ 3

Для объекта, имеющего несколько делегатов (вместо того, чтобы быть делегатом для нескольких объектов или классов):

  • Делегирование объекта должно иметь NSArray экземпляра делегата переменные.

  • Метод setDelegate setter затем необходимо добавить объект-делегат к этому массиву, а не просто присваивая его одному экземпляру переменная.

  • Код отправки для делегирования будет иметь перебирать делегата NSArray вместо проверки на только одна переменная экземпляра делегата быть не-ноль, прежде чем проверять обработка сообщений и вызов с сообщением.

Ничто не изменилось бы во всех объектах или классах, требующих делегирования для себя.

Ответ 4

Да, я думаю, вопрос об удобстве для нескольких протоколов выглядит примерно так:

@interface MyViewController () <protocol1, protocol2, protocol3>