Больше нельзя использовать пользовательские классы как типы - что-то сломалось - PullRequest
0 голосов
/ 14 января 2012

У меня странная проблема, это мой 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 голосов
/ 15 января 2012

Удаление #import ViewController.h из MapField и добавление @class ViewController (при необходимости) будет работать.Мне кажется, что проблема заключается в циклической ссылке на файлы .h, и ссылка на ViewController.h кажется ненужной.При необходимости вы можете использовать @class предварительное объявление для ViewController класса.

0 голосов
/ 14 января 2012

Добавьте @class MapField чуть выше вашего @interface вызова ViewController, чтобы сказать компилятору, что да, это класс.

...