Вы захотите объявить протокол делегата для вашего класса. Пример протокола делегата и интерфейса для класса Foo
может выглядеть следующим образом:
@class Foo;
@protocol FooDelegate <NSObject>
@optional
- (BOOL)foo:(Foo *)foo willDoSomethingAnimated:(BOOL)flag;
- (void)foo:(Foo *)foo didDoSomethingAnimated:(BOOL)flag;
@end
@interface Foo : NSObject {
NSString *bar;
id <FooDelegate> delegate;
}
@property (nonatomic, retain) NSString *bar;
@property (nonatomic, assign) id <FooDelegate> delegate;
- (void)someAction;
@end
Не забудьте синтезировать ваши свойства в @implementation
.
Что этот код сделал, так это объявил протокол под названием FooDelegate; класс, соответствующий этому протоколу, будет объявлен как @interface SomeClass : SuperClass <FooDelegate> {}
. Поскольку этот класс соответствует протоколу FooDelegate
, теперь он получает возможность реализовывать методы в FooDelegate
(чтобы требовать их реализации, используйте @required
вместо @optional
). Последний шаг - создание объекта Foo
в классе, соответствующем FooDelegate
, и для этого объекта Foo
его свойство делегата должно быть установлено:
Foo *obj = [[Foo alloc] init];
[obj setDelegate:self];
Теперь ваш класс готов к получению сообщений от Foo
объектов, у которых правильно установлены делегаты.