2 Stimmen

Cocoa Controller importiert Model, Model importiert Controller --> Exception

Warum ist es in Cocoa nicht möglich, dass zwei Klassen sich gegenseitig importieren? Ich habe den folgenden Code ausprobiert:

Controller.h:

#import <Cocoa/Cocoa.h>
#import "Model.h"

@interface Controller : NSObject {
 Model *model;
}

@end

Model.h:

#import <Cocoa/Cocoa.h>
#import "Controller.h"

@interface Model : NSObject {
 Controller *controller;
}

@end

was die folgenden Ausnahmen auslöst:

error: expected specifier-qualifier-list before 'Controller'
error: expected specifier-qualifier-list before 'Model'

Kann mir bitte jemand erklären, warum das so ist?

Danke! xonic

0voto

vodkhang Punkte 18481

Eine Lösung für dieses Problem ist die: Model.h:

#import <Cocoa/Cocoa.h>
#import "Controller.h"

@class Controller;
@interface Model : NSObject {
 Controller *controller;
}

@end

Und damit sind Sie fertig

0voto

Paul Lynch Punkte 19719

Erklären Sie, warum? Nein.

Aber die Lösung ist, die @class-Deklaration wie folgt zu verwenden:

@class Model;
@interface Controller : NSObject {
 Model *model;
}
@end

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X