Синтаксис для создания делегата View в Objective-C

Я пытаюсь создать протокол делегата для пользовательского UIView. Вот моя первая попытка:

@protocol FunViewDelegate
@optional
- (void) funViewDidInitialize:(FunView *)funView;
@end


@interface FunView : UIView {    
@private
}

@property(nonatomic, assign) id<FunViewDelegate> delegate;

@end

Это не работает, потому что интерфейс FunView не был объявлен во время объявления FunViewDelegate. Я попытался добавить прототип аля С++ перед @protocol:

@interface FunView;

Но это просто сводит компилятор с ума. Как я должен это сделать?


person Frank Krueger    schedule 14.11.2008    source источник


Ответы (2)


Синтаксис прямого класса — @class Foo;, а не @interface Foo;.

person Jens Ayton    schedule 14.11.2008

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

@protocol FunViewDelegate;

@interface FunView : UIView {    
@private
    id<FunViewDelegate> delegate;
}
@property(nonatomic, assign) id<FunViewDelegate> delegate;
@end

@protocol FunViewDelegate
@optional
- (void) funViewDidInitialize:(FunView *)funView;
@end
person Frank Krueger    schedule 14.11.2008