2011-10-26 5 views
41

je me suis code comme ceci:Xcode nom de type inconnu

Match.h:

#import <Foundation/Foundation.h> 
#import "player.h" 

@interface Match : NSObject 
{ 
    Player *firstPlayer; 
} 

@property (nonatomic, retain) Player *firstPlayer; 

@end 

Player.h:

#import <Foundation/Foundation.h> 
#import "game.h" 
@interface Player : NSObject 
{ 
} 

- (Player *) init; 

//- (NSInteger)numberOfPoints; 
//- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil; 


@property (nonatomic, retain) NSString *name; 
@property (nonatomic, retain) NSString *surname; 
@property (nonatomic, assign) NSInteger *player_id; 
@property (nonatomic, retain) NSString *notes; 

@end 

Game.h:

#import <Foundation/Foundation.h> 
#import "match.h" 
#import "player.h" 

@interface Game : NSObject 
{ 
    NSMutableArray *matches; 
    NSMutableArray *players; 
    NSString *name; 
} 

-(Game *) init; 

@property (nonatomic, retain) NSMutableArray *matches; 
@property (nonatomic, retain) NSMutableArray *players; 
@property (nonatomic, retain) NSString *name; 

@end 

Xcode ne compilera pas mon projet et me montrera erreur type inconnu 'Player 'dans Match.h quand je déclare * firstPlayer.

J'ai essayé projet de nettoyage, la reconstruction, mais sans résultat ...

+10

Vous avez un cycle dans vos importations: Match.h importe Player.h importe Game.h importe Match.h. Voir [cette question] (http://stackoverflow.com/q/7896440/557219). –

+0

duplication possible de [fichier d'en-tête Objective-C ne reconnaissant pas l'objet personnalisé en tant que type] (http://stackoverflow.com/q/7896440/557219) –

Répondre

123

La façon normale de résoudre ce cycle est de transmettre les classes: déclarer

En Match.h:

@class Player; 
@interface Match ... 
    Player * firstPlayer; 

et #import "Player.h uniquement dans Match.m, not dans Match.h

Identique pour les deux autres fichiers .h.

+0

A travaillé comme un charme. Merci. – Myxtic

+2

merci beaucoup, même quelques fois de petits problèmes prennent beaucoup de temps pour le résoudre est peut-être de perdre la puissance de la mémoire de travail dans le domaine des logiciels .. –

+0

beau travail ..... merci +1 :) – iLearner