2011-08-28 17 views
9

मेरा प्रोग्राम ठीक चल रहा था, लेकिन मैंने कुछ बदल दिया और अब इसमें 48 से अधिक त्रुटियां हैं।परिपत्र संदर्भ आयात करते समय त्रुटियां

मुझे लगता है कि मुझे समस्या पता है, लेकिन मुझे नहीं पता कि इसे कैसे ठीक किया जाए। मैंने अपने सभी UIViewController से प्राप्त करने के लिए mViewBase नामक एक कक्षा बनाई है।

मैंने cakes2 नामक अन्य दृश्य नियंत्रकों पर जाने के लिए, मेरे सभी विचारों के नीचे एक नेविगेशन बार रखने का निर्णय लिया। तो cakes2.h आयात mViewBase, और mViewBase आयात केक 2.h

आप उद्देश्य-सी में ऐसा करने में सक्षम होना चाहिए। क्या किसी के पास कोई विचार है कि मैं क्या कर सकता हूं?

मेरे mViewBase.h फ़ाइल:

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

@interface mViewBase : UIViewController { 
    UIView *mBackground; 
    UIView *mBackArrow; 
    UITextView *mTitle; 
    // Cakes2 *mCakes; 
} 

-(void) aSetTitle: (NSString *) NewTitle; 
-(IBAction) aBack: (id) tender; 
-(IBAction) aHome: (id) sender; 
-(IBAction) aCakes: (id) sender; 
-(IBAction) aCall: (id) sender; 
-(IBAction) aDirections: (id) sender; 
@end 

मेरे Cakes2.h फ़ाइल:

#import <UIKit/UIKit.h> 
#import "Gallery.h" 
#import "WebView.h" 
#import "mViewBase.h" // Circular reference! But I need it 

@interface Cakes2 : mViewBase <UITableViewDelegate, UITableViewDataSource> { 
    // Gallery *mGallery; 
    IBOutlet UITableView *mMenu; 
    // WebView *mWebView; 
} 
-(IBAction) aOpenWeb; 
@end 
+0

समान: http://stackoverflow.com/questions/1619075/possible-circular-reference-problem –

+0

क्या आप वाकई समस्या है? कुछ पोकिंग के मुताबिक मैंने अभी किया है "#import निर्देश यह सुनिश्चित करता है कि ऑब्जेक्ट-सी में फाइलों को प्रति संकलन में एक बार आयात (शामिल) किया जाता है। – Dogmatixed

उत्तर

19

अन्य हेडर आयात करने की आवश्यकता से बचने के लिए आप अपनी शीर्षलेख फ़ाइलों में से किसी एक में आगे की घोषणा का उपयोग कर सकते हैं। उदाहरण के लिए, mViewBase.h में, आप कह सकते हैं:

@class Cakes2; 

अब संकलक जानता है कि "Cakes2" एक वर्ग को संदर्भित करता है, और आप पूरे Cakes2.h फ़ाइल आयात करने की जरूरत नहीं है।

+0

एचएच फाइलों में जितनी संभव हो उतनी फ़ाइलों को आज़माएं और शामिल करें, @class आगे की घोषणाओं को प्राथमिकता दें। एक हेडर फ़ाइल कक्षा के सार्वजनिक इंटरफ़ेस का पर्दाफाश करने के लिए डिज़ाइन की गई है। – zaph

+5

नमस्ते यह वह चाल है जिसे मैंने @class में हेडर फ़ाइल में रखा है और एम फ़ाइल में आयात :) धन्यवाद, टेड –

0

मुझे लगता है कि आप शायद एक UITabBarController उपयोग करने पर विचार करना चाहिए। यह विशेष रूप से स्क्रीन के नीचे एक बार से कई दृश्य नियंत्रकों के प्रबंधन के लिए बनाया जाता है।

+0

हाय आपकी टिप्पणी के लिए धन्यवाद, मैं इसके बारे में सोच रहा था, लेकिन मेरी परियोजना लगभग पूरी हो चुकी है और कोड को फाड़ना नहीं चाहता था। –

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