2011-10-26 51 views
41

我有这样的代码:Xcode的未知类型名称

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不会编译我的项目并显示错误未知类型'播放器'在Match.h中声明* firstPlayer时。

我试图清理项目,重建它,但没有任何结果......

+10

您在导入中有一个循环:Match.h进口Player.h进口Game.h进口Match.h。看[这个问题](http://stackoverflow.com/q/7896440/557219)。 – 2011-10-26 00:07:19

+0

[Objective-C头文件无法将自定义对象识别为类型]的可能重复(http://stackoverflow.com/q/7896440/557219) –

回答

123

正常的方式来解决这个周期是转发声明类:

在Match.h:

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

和do #import "Player.h只在Match.m中,01​​在Match.h中

与其他两个.h文件相同。

+0

像魅力一样工作。谢谢。 – Myxtic

+2

非常感谢很多小问题花费很多时间来解决它可能会失去在软件领域工作的记忆力.. –

+0

不错的工作.....谢谢+1 :) – iLearner