Declaring protocol like @class
objective-c
Solution
Use @protocol for protocols forward declaration:
@protocol Protocol2;
@protocol Protocol1 <NSObject>
-(void)setProtocolDelegate:(id<Protocol2>)delegate;
@end
@protocol Protocol2 <NSObject>
-(void)protocol:(UIViewController<Protocol1>*)anObject chosenElementAtIndex:(NSInteger)aIndex;
@end
Problem
I have two protocols communicating with each other. They are defined in the same file. ``` @protocol Protocol1 <NSObject> -(void)setProtocolDelegate:(id<Protocol2>)delegate; @end @protocol Protocol2 <NSObject> -(void)protocol:(UIViewController<Protocol1>*)anObject chosenElementAtIndex:(NSInteger)aIndex; @end ``` How to declare an empty protocol `Protocol2` just to let know compiler that it is declared later? If `Protocol2` was a class I'd write `@class Protocol2;` beforewards. ``` @class Protocol2; @protocol Protocol1 <NSObject> -(void)setProtocolDelegate:(Protocol2*)delegate; @end @interface Protocol2 <NSObject> -(void)protocol:(UIViewController<Protocol1>*)anObject chosenElementAtIndex:(NSInteger)aIndex; @end ``` What is the similar construction for protocols?