2009-07-28 10 views
1

ich habe:Interdependent Objekte verursacht Compiler-Fehler

@interface A 
@property (nonatomic, retain) B *toB; 
@end 

@interface B 
@property (nonatomic, retain) A *toA; 
@end 

Dies veranlasst den Compiler, um zu mir diese:

Fehler: erwartet Spezifizierer-Qualifizierer-Liste vor 'Property'

, it Now Dies scheint etwas mit der Reihenfolge zu tun, in der die Dateien als unabhängig analysiert werden. Sie funktionieren so lange, wie das Objekt, auf das gezeigt wird, zuerst deklariert wird.

Wie kann ich das umgehen?

Antwort

2

Verwenden Sie die Forward-Deklaration über @class, um dem Compiler mitzuteilen, dass es eine Klasse namens A gibt, für die die Schnittstelle noch nicht gefunden wurde.

Zum Beispiel:

@class A; 
@class B; 

@interface A 
@property (nonatomic, retain) B *toB; 
@end 

@interface B 
@property (nonatomic, retain) A *toA; 
@end 
+1

Keine Notwendigkeit, einen hier voraus zu erklären, just B. A wird bereits von der Zeit erklärt es in B Erklärung verwendet wird. – smorgan

+0

Danke, ich hatte das Gefühl, dass es so ähnlich wäre :-) – mjmdavis

Verwandte Themen