不能再使用自定义类作为类型了 - 有些东西破了

时间:2012-01-14 19:51:52

标签: xcode header-files

我有一个奇怪的问题,这是我的Headerfile ViewController.h

#import <UIKit/UIKit.h>
#import "MapField.h"

@interface ViewController : UIViewController{
IBOutlet UIView *simField;
IBOutlet UISegmentedControl *segmentControl;
IBOutlet UILabel *timeLabel;
double fieldAlpha;
IBOutlet UISlider *alphaSlider;
double tickTime;
int totalNumberOfCars;
}

/*shortened, here are the property ... declarations usually */

-(MapField*)findDepartureField;
-(MapField*)findDestinationField;

MapField.h类看起来像这样:

#import <UIKit/UIKit.h>
#import "ViewController.h"


@interface MapField : UIImageView{
    UIViewController *delegate;
    int x;
    int y;
    int numberOfCars;
    double wAb;
    double wAn;
    int dFahrtdauer;

 }


 @property (nonatomic) int x;
 @property (nonatomic) int y;
 @property (nonatomic) int numberOfCars;
 @property (nonatomic) double wAb;
 @property (nonatomic) double wAn;
 @property (nonatomic) int dFahrtdauer;
 @property (nonatomic, retain) UIViewController *delegate;


 -(void)setDisplayMode:(int)mode;


 @end

看起来很好并且工作总是很好,但是在这两行中我在ViewController.h中遇到了一个奇怪的错误:

-(MapField*)findDepartureField;
-(MapField*)findDestinationField;

错误:预期类型(并且MapField标记为红色)。

我不明白。我检查了一千次。它必须工作!其他地方一定有一些奇怪的错误!

2 个答案:

答案 0 :(得分:0)

在ViewController的@class MapField调用上方添加@interface,告诉编译器是,它是一个类。

答案 1 :(得分:0)

#import ViewController.h取消MapField并添加@class ViewController(如有必要)可行。对我来说,似乎问题是.h文件的循环引用,并且ViewController.h的引用似乎是不必要的。如果需要,您可以对@class类使用ViewController转发声明。