Frank Krueger
Frank Krueger

Reputation: 70993

Syntax for creating View delegate in Objective-C

I am trying to create a delegate protocol for a custom UIView. Here is my first attempt:

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


@interface FunView : UIView {    
@private
}

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

@end

This doesn't work because the FunView interface has not been declared at the time of the FunViewDelegate declaration. I have tried adding a prototype ala C++ before the @protocol:

@interface FunView;

But this just drives the compiler nuts. How am I supposed to do this?

Upvotes: 3

Views: 6732

Answers (2)

Jens Ayton
Jens Ayton

Reputation: 14558

Forward class syntax is @class Foo;, not @interface Foo;.

Upvotes: 10

Frank Krueger
Frank Krueger

Reputation: 70993

It would seem that you can forward declare protocols:

@protocol FunViewDelegate;

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

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

Upvotes: 9

Related Questions