2012-06-05 8 views
7

मेरे पास दो प्रोटोकॉल एक-दूसरे के साथ संवाद कर रहे हैं। वे एक ही फाइल में परिभाषित हैं।प्रोटोकॉल घोषित करना जैसे कि @class

@protocol Protocol1 <NSObject> 
-(void)setProtocolDelegate:(id<Protocol2>)delegate; 
@end 

@protocol Protocol2 <NSObject> 
-(void)protocol:(UIViewController<Protocol1>*)anObject chosenElementAtIndex:(NSInteger)aIndex; 
@end 

कैसे एक खाली प्रोटोकॉल Protocol2 घोषित करने के लिए बस जाने के लिए संकलक है कि यह बाद में घोषित किया जाता है पता है?

यदि Protocol2 एक कक्षा थी, तो मैं पहले @class Protocol2; लिखूंगा।

@class Protocol2; 
@protocol Protocol1 <NSObject> 
-(void)setProtocolDelegate:(Protocol2*)delegate; 
@end 

@interface Protocol2 <NSObject> 
-(void)protocol:(UIViewController<Protocol1>*)anObject chosenElementAtIndex:(NSInteger)aIndex; 
@end 

प्रोटोकॉल के लिए समान निर्माण क्या है? प्रोटोकॉल के लिए

उत्तर

10

@protocol आगे घोषणा का उपयोग करें:

@protocol Protocol2; 
@protocol Protocol1 <NSObject> 
-(void)setProtocolDelegate:(id<Protocol2>)delegate; 
@end 

@protocol Protocol2 <NSObject> 
-(void)protocol:(UIViewController<Protocol1>*)anObject chosenElementAtIndex:(NSInteger)aIndex; 
@end 
1

समस्या आपके साथ है कि आप आगे @class कीवर्ड के साथ प्रोटोकॉल घोषित कर दिया है। यह @protocol होना चाहिए।

+0

मुझे पता है कि यह '@ वर्ग 'नहीं होना चाहिए। सवाल स्पष्ट करने के लिए, मैंने वर्गों के साथ समानता दिखाने के लिए दूसरा स्निपेट का उपयोग किया। वैसे भी, मदद के लिए धन्यवाद –

संबंधित मुद्दे