Как создать делегат в Objective-C?

Пользователь

от maya , в категории: Другие , 10 месяцев назад

Как создать делегат в Objective-C?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от amaya_bahringer , 9 месяцев назад

@maya 

В Objective-C делегаты создаются с помощью протокола (protocol) и свойства (property) с типом id в классе, который будет иметь делегата. Ниже приведен пример создания делегата для класса MyClass:

  1. Создайте протокол, который описывает методы, которые класс-делегат будет реализовывать. Например:


@protocol MyClassDelegate

  • (void)myClassDidFinishTask:(MyClass *)myClass; @end
  1. В классе MyClass объявите свойство делегата и метод, который будет вызывать делегата:


@interface MyClass : NSObject @property (nonatomic, weak) id delegate;

  • (void)startTask; @end


@implementation MyClass

  • (void)startTask { // выполнение задачи // ... // вызов метода делегата, если он реализован if ([self.delegate respondsToSelector:@selector(myClassDidFinishTask:)]) { [self.delegate myClassDidFinishTask:self]; } } @end
  1. Теперь любой объект может стать делегатом MyClass, реализовав соответствующий протокол:


@interface MyDelegate : NSObject @end


@implementation MyDelegate

  • (void)myClassDidFinishTask:(MyClass *)myClass { // обработка завершения задачи } @end
  1. Для того чтобы установить делегата, необходимо просто присвоить объект класса-делегата свойству delegate класса MyClass:


MyClass *myClass = [[MyClass alloc] init]; MyDelegate *myDelegate = [[MyDelegate alloc] init]; myClass.delegate = myDelegate;


Теперь при вызове метода startTask объект MyClass будет вызывать метод делегата myClassDidFinishTask: после завершения задачи.