चूंकि मेरे पास हाल ही में एक आयात-चक्र था, इसलिए मैं शीर्ष -file में हेडर से सभी #import
कथन (मेरी अपनी फ़ाइलों के बारे में) ले जा रहा हूं। मैंने संकलक को शांत करने के लिए @class
और @protocol
आगे-घोषणाओं को भी जोड़ा। हालांकि, मैं अब भी वह चेतावनी निम्नलिखित मिलती है:एक्सकोड गायब प्रोटोकॉल परिभाषा के बारे में चेतावनी देता है, भले ही @protocol का उपयोग किया जाता है
Cannot find the protocol definition for 'MyCustomDelegate'.
जैसा कि मैंने कहा, वहाँ है एक @protocol MyCustomDelegate
इससे पहले कि मैं @interface
-Block में इसका इस्तेमाल करते हैं। दिलचस्प बात यह चेतावनी केवल तब होती है जब संबंधित प्रतिनिधि को किसी अन्य फ़ाइल में घोषित किया जाता है (जिसका शीर्षलेख .m
-file में आयात किया जाता है)।
मैंने पढ़ा है कि एक समाधान प्रतिनिधि को एक अलग हेडर फ़ाइल में घोषित करना है और उस फ़ाइल को सीधे उस वर्ग के शीर्षलेख में आयात करना है जो प्रतिनिधि को लागू करता है। क्या यह वास्तव में जाने का रास्ता है? क्या कोई अन्य समाधान है? मुझे लगता है कि उन प्रतिनिधियों ने पहले ही हमारे कोड को पर्याप्त रूप से फहराया है, अब मुझे इसके लिए अपनी फाइल घोषित करनी चाहिए?
बेहतर समस्या को वर्णन करने के छोटे नमूना कोड:
NewFooController.h
#import <UIKit/UIKit.h>
@protocol NewFooControllerDelegate;
@interface NewFooController : UITableViewController
@property (nonatomic, weak) id<NewFooControllerDelegate> delegate;
@end
@protocol NewFooControllerDelegate
@end
HomeTableViewController.h
#import <UIKit/UIKit.h>
@protocol NewFooControllerDelegate;
// warning points to line below
@interface HomeTableViewController : UITableViewController <NewFooControllerDelegate>
@end
HomeTableViewController.m
#import "HomeTableViewController.h"
#import "NewFooController.h"
@implementation HomeTableViewController
@end
कहाँ NewFooController.h आयात कर में प्रोटोकॉल घोषणा निकाल सकते हैं? –
क्षमा करें, मैं कोड के प्रतिलिपि और चिपका हुआ हिस्सा। ;) मैंने '#import" NewTaskController.h "को' #import "NewFooController.h' में बदल दिया है। –