在Objective-C中创建View委托的语法

时间:2008-11-14 20:37:47

标签: iphone objective-c cocoa macos syntax

我正在尝试为自定义UIView创建委托协议。这是我的第一次尝试:

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


@interface FunView : UIView {    
@private
}

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

@end

这不起作用,因为在FunViewDelegate声明时尚未声明FunView接口。我试过在@protocol之前添加一个原型ala C ++:

@interface FunView;

但这只会驱动编译器。我该怎么做?

2 个答案:

答案 0 :(得分:10)

转发类语法为@class Foo;,而不是@interface Foo;

答案 1 :(得分:9)

您似乎可以转发声明协议:

@protocol FunViewDelegate;

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

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