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

Fra*_*ger 3 iphone syntax macos cocoa objective-c

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

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


@interface FunView : UIView {    
@private
}

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

@end
Run Code Online (Sandbox Code Playgroud)

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

@interface FunView;
Run Code Online (Sandbox Code Playgroud)

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

Jen*_*ton 10

转发类语法@class Foo;不是@interface Foo;.


Fra*_*ger 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
Run Code Online (Sandbox Code Playgroud)