unbekannter Typname in Ziel c
Ich bin Recht neu in objective-c und haben einige grundlegende Probleme.
Schrieb ich ein einfaches Programm mit einem navigator, und alles hat gut funktioniert.
dann habe ich die paar Zeilen code (kann nicht einmal daran erinnern, was genau, und es scheint keine Verbindung zu dem problem) und das problem aufgetreten ist. Ich habe versucht, Strg+z, und das problem blieb:
Ich das Programm und bekomme diesen Fehler:
1. unknown type name "mainController"
2. property with 'retain (or strong)' attribute must be of object type
während mainController ist der erste Bildschirm geladen werden.
Dies ist das appDelegate.h-Datei:
#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
dies ist der relevante Teil der appDelegate.m-Datei:
- (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;
}
Und das ist 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
es schon geklappt...
können Sie es herausfinden?
Dank
InformationsquelleAutor der Frage Amit Hagin | 2012-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieses problem passiert mir einmal.
War ich den Import "APPDelegate.h" in mein h-file und in meiner APPDelegate.h, ich war das importieren der Datei (es sollte nicht das problem sein, aber...)
Was ich getan habe: ich habe die Einfuhr von meiner eigenen .h zu .m und es hat geklappt 🙂
InformationsquelleAutor der Antwort João Nunes
Ich herausgefunden, dass die gleiche Fehlermeldung erscheint, wenn Sie eine import-Zyklus:
Class_A.h:
#import "Class_B.h"
Class_B.h:
#import "Class_A.h"
Beheben: Blick für alle Einfuhren der betreffenden Klasse (der Fehler-tab ist dein Freund, erweitern Sie den entsprechenden Fehler für eine Liste der Importe). Entfernen
#import
's entsprechendInformationsquelleAutor der Antwort JustAStranger
Wie andere erwähnt haben, ist dies in der Tat verursacht durch zyklische Importe. Um dies zu beheben, entfernen Sie die Importe in eine der Klassen. Aber manchmal ist dies nicht ausreichend. Wenn Klassen voneinander abhängen, einfach vorwärts-deklarieren Sie eine Klasse in der anderen:
Klasse A:
In der Klasse B haben wir:
InformationsquelleAutor der Antwort Tash Pemhiwa
Überprüfen Sie das Ziel und die Dateien kompilieren. Vielleicht mainController hat, wie einige wurden entfernt von diesem Ziel. Wenn das so ist, beim Bau, Sie würden die Nachricht erhalten, dass es nicht gefunden werden kann.
InformationsquelleAutor der Antwort drekka
@JustAStranger und @NathanielSymer, beide sind richtig!!!!
Sowieso, lohnt sich erinnern, dass es in diesem Fall, von unten, die hat das gleiche problem auch:
Class_A.h:
#import "Class_B.h"
Class_B.h:
#import "Class_C.h"
Class_C.h:
#import "Class_A.h"
Dieses problem zeigen uns wie wichtig ist, kümmern sich die Besitzer bei uns in der Klasse Beziehungen. Ist sehr einfach erstellt Kreislauf Probleme mit ObjC-Header.
InformationsquelleAutor der Antwort seufagner
Diesem problem sieht wie ein Tippfehler, weil Klassennamen beginnen gewöhnlich mit einem Großbuchstaben Charakter. Daher mainController könnte/sollte MainController. Überprüfen Sie den Namen der Klasse, um zu sehen, ob der Fehler ist in der Tat ein Tippfehler, da der compiler sagt Sie es nicht finden können, jede Klasse " mainController.
InformationsquelleAutor der Antwort drekka