2011-03-24 5 views
5

मैं इस तरह एक वर्ग है ..'MyObjectViewDelegate' के लिए प्रोटोकॉल घोषणा नहीं ढूंढा जा सकता है जब यह स्पष्ट रूप से नहीं है? 1

#import "MyObjectAddView.h" 
#import "MyAppDelegate.h" 

#define myAppDelegate (MyAppDelegate *) [[UIApplication sharedApplication] delegate] 

@class MyObjectAddView; 

@interface AccountViewController : UIViewController <UIScrollViewDelegate, MyObjectAddViewDelegate, UIImagePickerControllerDelegate> { 

    MyObjectAddView *myAddView; 
    ..... 
} 

@property (nonatomic, retain) IBOutlet MyObjectAddView *myAddView; 

- (id) initWithSettings:(SettingsObject *)settings; 

@end 

क्यों यह अचानक मुझे कह रहा है कि यह 'MyObjectAddViewDelegate' के लिए प्रोटोकॉल घोषणा नहीं खोजा जा सका जब मैं स्पष्ट रूप से आयात कर रहा हूं और प्रोटोकॉल को परिभाषित करने के लिए @class समेत? यहाँ कैसे MyObjectAddView स्थापना:

#import <UIKit/UIKit.h> 
#import "MyAppDelegate.h" 

#define myAppDelegate (MyAppDelegate *) [[UIApplication sharedApplication] delegate] 

@protocol MyObjectAddViewDelegate; 

@interface MyObjectAddView : UIView <UITextFieldDelegate> { 

@private 
    id <MyObjectAddViewDelegate> delegate; 
    ....  
@public 
    ..... 
} 

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

@end 

@protocol MyObjectAddViewDelegate <NSObject> 
// expense == nil on cancel 
- (void)myObjectAddViewDidFinish:(MyObjectAddView *)addView; 

@end 

सब कुछ पूरी तरह से सेटअप लगता है और मैं किसी भी परिपत्र आयात नहीं दिख रहा है?! कोई सुझाव क्यों MyObjectAddView में प्रोटोकॉल परिभाषा नहीं देख रहा है?

धन्यवाद।

+0

अपनी शामिल फ़ाइलों की जांच करें।
यह दो परस्पर शामिल हेडर का लक्षण है।
कभी-कभी यह त्रुटि उत्पन्न करता है। – skywinder

उत्तर

8

उस कक्षा के लिए हेडर आयात करने के बाद आपको कक्षा के आगे संदर्भ की आवश्यकता नहीं है। केवल एक समय जब आप आगे संदर्भ करते हैं तो यह है कि यदि आप कार्यान्वयन फ़ाइल के अंदर हेडर को शामिल करने की योजना बनाते हैं। @class MyObjectAddView हटाएं और यदि यह ठीक करता है तो मुझे बताएं कि क्या मेरे पास आपके लिए कोई और समाधान नहीं हो सकता है।

+0

मुझे आगे संदर्भ की आवश्यकता है अन्यथा यह MyObjectAddView_ से पहले _exOabledAddView * myAddView' पंक्ति पर दुर्घटनाग्रस्त हो रहा है, जो MyObjectAddView_ से पहले है, जिसे मुझे नहीं पता कि इसका क्या अर्थ है। अगर मैं आगे का संदर्भ भी शामिल करता हूं तो यह त्रुटि दूर हो जाती है। तो इसे हटाने से समस्या ठीक नहीं होती है। इसे हटाने से अभी भी कहा जाता है कि यह प्रोटोकॉल घोषणा नहीं पा रहा है। हम्म –

+0

यह अजीब लगता है। कुछ और हो रहा है। मैं आपका दूसरा कोड नमूना अनुमान लगा रहा हूं MyObjectAddView.h है और यदि ऐसा है तो आपको पहले कोड उदाहरण में आगे की घोषणा शामिल करने की आवश्यकता नहीं है क्योंकि आप इसे स्पष्ट रूप से आयात करते हैं। यह संभव हो सकता है कि यद्यपि हेडर फ़ाइल आपकी प्रोजेक्ट में है, हो सकता है कि यह एक गलत निर्देशिका में है और इसलिए शीर्षलेख खोज पथ में नहीं है। – Joe

+2

समस्या हल हो गई। मैंने कहा कि कोई चक्रीय आयात नहीं चल रहा था लेकिन वास्तव में सभी वर्गों के भीतर #import "MyAppDelegate.h" के साथ था। मसला हल हो गया। @class की आवश्यकता होने पर मुझे प्रबुद्ध करने के लिए धन्यवाद। –

6

चर्चा संश्लेषित करना: दूसरा समाधान प्रतिनिधि कार्यान्वयन और प्रोटोकॉल घोषणा के बीच चक्रीय आयात की जांच करना है। यह मेरी समस्या हल हो गई।

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

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