2012-01-10 18 views
17

में अज्ञात प्रकार का नाम मैं उद्देश्य सी के लिए काफी नया हूं, और कुछ बुनियादी समस्याएं हैं।उद्देश्य सी

मैंने नेविगेटर का उपयोग करके एक सरल कार्यक्रम लिखा, और सब ठीक काम किया। तब मैंने कोड की कुछ पंक्तियां जोड़ दीं (यह भी याद नहीं कर सकती कि वास्तव में क्या है, और ऐसा लगता है कि समस्या से कोई संबंध नहीं है) और समस्या आई। मैं Ctrl + Z की कोशिश की, और समस्या बनी रही:

मैं इस कार्यक्रम चलाने के लिए और इन त्रुटियों को मिलता है:

1. unknown type name "mainController" 
2. property with 'retain (or strong)' attribute must be of object type 

जबकि mainController पहली स्क्रीन लोड किया जा रहा है।

यह appDelegate.h फ़ाइल है:

#import <UIKit/UIKit.h> 
#import "mainController.h" 
#import "WishesList.h" 
#import "Wish.h" 

@interface AppDelegate : UIResponder <UIApplicationDelegate> 

@property (strong, nonatomic) UIWindow *window; 
@property (strong, nonatomic) IBOutlet UINavigationController *navController; 
@property (strong, nonatomic) IBOutlet mainController *viewController; // this line creates the errors 
@property (strong, nonatomic) WishesList *WishesArray; 
@property (strong, nonatomic) NSIndexPath *temp; 

@end 

इस AppDelegate.m फ़ाइल के प्रासंगिक हिस्सा है:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]]; 
    WishesArray = [[WishesList alloc]init]; 
    temp = nil; 
    [self setViewController:[[mainController alloc]init]]; 
    [self setNavController:[[UINavigationController alloc]initWithRootViewController:self.viewController]]; 
    [self.window setRootViewController:navController]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

और यह mainController.h है:

#import <UIKit/UIKit.h> 
#import "addWishController.h" 
#import "displayWish.h" 
#import "WishesList.h" 
#import "Wish.h" 

@interface mainController : UIViewController 

@property (nonatomic, weak) WishesList *list; 
@property (nonatomic, strong) IBOutlet UITableView *wishTable; 

- (void)addWish; 

@end 

यह पहले से ही काम कर रहा है ...
क्या आप इसे समझ सकते हैं? क्योंकि वर्ग के नाम आम तौर पर एक अपरकेस अक्षर से आरंभ होने

धन्यवाद

+3

हमें दिखाएं 'mainController। कृपया – mattjgalloway

+0

क्या नाम 'mainController' नाम से परिभाषित एक वर्ग है? –

+0

मैंने mainController.h जोड़ा है ताकि आप इसे –

उत्तर

16

यह समस्या एक बार मेरे साथ होती है।

मैं अपने ज फ़ाइल में "APPDelegate.h" आयात किया गया था और मेरी APPDelegate.h में मैं (यह एक समस्या नहीं होनी चाहिए, लेकिन ...) भी फ़ाइल आयात किया गया था

मैं क्या किया: मैं मीटर करने के लिए अपने ही ज से आयात बदल गया और यह :)

+3

काम करता है इस उत्तर के अतिरिक्त। यदि आपको अपने हेडर में उस प्रकार की आवश्यकता है, लेकिन आयात-चक्र से बचना चाहते हैं, तो बस आगे की घोषणाओं का उपयोग करें। उदाहरण: '@class मुख्य नियंत्रक;' – jackal

-1

यह समस्या लिखने में कोई त्रुटि की तरह दिखता है। इसलिए, मुख्य नियंत्रक मुख्य नियंत्रक हो सकता है/होना चाहिए। यह देखने के लिए कक्षा का नाम देखें कि त्रुटि वास्तव में एक टाइपो है, क्योंकि संकलक आपको बता रहा है कि इसे मेनकंट्रोलर नामक कोई भी वर्ग नहीं मिल रहा है।

+0

नहीं देख सकें ... यह सही ढंग से लिखा गया है। जैसा कि मैंने कहा - यह पहले से ही –

0

लक्ष्य और फ़ाइलों को संकलित करने की जांच करें। शायद मुख्य नियंत्रक को उस लक्ष्य से कुछ हटा दिया गया है। यदि ऐसा है, तो इमारत के दौरान, आपको वह संदेश मिलेगा जो इसे नहीं मिला।

34

मैं पता लगा, एक ही त्रुटि दिखाई देती है कि अगर आप एक आयात चक्र है काम:

Class_A.h: #import "Class_B.h"

कक्षा_B.h: #import "Class_A.h"

ठीक करने के लिए: आपत्तिजनक वर्ग के किसी भी आयात की तलाश करें (त्रुटि टैब आपका मित्र है, आयात की सूची के लिए प्रासंगिक त्रुटि का विस्तार करें)। #import के अनुसार

+0

यह वास्तव में मेरा मुद्दा है। धन्यवाद – pnizzle

+0

thx ... मेरी समस्या हल! – iOSDev

0

@JustAStranger और @NathanielSymer, दोनों सही हैं!

वैसे भी, लायक याद है कि इस मामले के लिए, नीचे, एक ही समस्या भी है:

Class_A.h: #import "Class_B.h"

Class_B।ज: #import "Class_C.h"

Class_C.h: #import "Class_A.h"

यह समस्या हमें पता चलता है कि महत्वपूर्ण हमारे क्लास रिश्तों पर मालिकों के बारे में ध्यान रखना है। ओबीजेसी हेडर का उपयोग कर चक्र समस्याएं बहुत आसान बनाती हैं।

1

जैसा कि अन्य ने उल्लेख किया है, यह वास्तव में चक्रीय आयात के कारण होता है। इसे ठीक करने के लिए कक्षाओं में से एक में आयात को हटा दें। लेकिन कभी-कभी यह पर्याप्त नहीं है। कक्षाएं एक दूसरे पर निर्भर हैं, तो बस एक वर्ग दूसरे में आगे की घोषणा:

क्लास ए:

#import <UIKit/UIKit.h> 
@class B; //<- this is essential here 

@interface A: NSObject 

@property(nonatomic, strong) B *b; 
//... 

वर्ग बी में हमने:

#import "A.h" 
@interface B: NSObject 

@property(nonatomic, strong) A *a;