2011-10-26 25 views
41

tôi đã nhận mã như thế này:xcode kiểu không rõ tên

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 sẽ không biên dịch dự án của tôi và hiển thị cho tôi lỗi không xác định loại 'Trình phát 'trong Match.h khi tôi tuyên bố * firstPlayer.

Tôi đã cố gắng làm sạch dự án, xây dựng lại nó nhưng không có kết quả nào ...

+10

Bạn có một chu kỳ trong hàng nhập khẩu của bạn: Match.h nhập Player.h nhập Game.h nhập Match.h. Xem [câu hỏi này] (http://stackoverflow.com/q/7896440/557219). –

+0

bản sao có thể có của [tệp tiêu đề Objective-C không nhận dạng được đối tượng tùy chỉnh dưới dạng một loại] (http://stackoverflow.com/q/7896440/557219) –

Trả lời

123

Cách thông thường để giải quyết chu kỳ này là để chuyển tiếp tuyên bố lớp:

Trong Match.h:

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

và làm #import "Player.h chỉ trong Match.m, not trong Match.h

Tương tự cho hai tệp .h khác.

+0

Làm việc giống như một sự quyến rũ. Cảm ơn. – Myxtic

+2

cảm ơn rất nhiều ngay cả khi một số vấn đề nhỏ mất nhiều thời gian để giải quyết nó có thể làm mất đi sức mạnh bộ nhớ trong lĩnh vực phần mềm .. –

+0

việc tốt ..... cảm ơn +1 :) – iLearner

Các vấn đề liên quan