0

これは単純な間違いかもしれませんが、エラーの何が問題なのかわかりませんUnknown type name 'TransportViewController'doubleTransportViewController である 2番目のビューに 2 つの値である xCoor と yCoor を渡そうとしています。これが私のコードです:

TransportViewController *xCoor;
TransportViewController *yCoor;
@property (retain, nonatomic) TransportViewController *xCoor;
@property (retain, nonatomic) TransportViewController *yCoor;

この4行でエラーが発生しています

MapViewController.h ファイル

#import "TransportViewController.h"
@interface MapViewController : UIViewController{
    TransportViewController *xCoor;
    TransportViewController *yCoor;
}
@property (retain, nonatomic) TransportViewController *xCoor;
@property (retain, nonatomic) TransportViewController *yCoor;

MapViewController.m ファイル

#import "TransportViewController.h"
@implementation MapViewController
@synthesize xCoor;
@synthesize yCoor;
.
.
.
- (IBAction) publicTransportAction:(id)sender{
    TransportViewController *view = [[TransportViewController alloc] initWithNibName:nil bundle:nil];
    self.xCoor = view;
    self.yCoor = view;
    xCoor.xGPSCoordinate = self.mapView.gps.currentPoint.x;
    yCoor.xGPSCoordinate = self.mapView.gps.currentPoint.y;
    [self presentModalViewController:view animated:NO];
}

TransportViewController.h ファイル

#import "MapViewController.h"
@interface TransportViewController : UIViewController<UITextFieldDelegate>
{
    double xGPSCoordinate;
    double yGPSCoordinate;
}
@property(nonatomic)double xGPSCoordinate;
@property(nonatomic)double yGPSCoordinate;
@end
4

1 に答える 1

1

循環依存があります。要するに、あなたはコンパイラーに指示しました:

  • MapViewController.hニーズTransportViewController.h
  • TransportViewController.hニーズMapViewController.h

実際には、ヘッダーにはどちらも必要ありません。どちらの場合も、前方宣言を使用できます。

MapViewController.h

@class TransportViewController; // << forward declaration instead of inclusion

@interface MapViewController : UIViewController {
    TransportViewController *xCoor;
    TransportViewController *yCoor;
}
@property (retain, nonatomic) TransportViewController *xCoor;
@property (retain, nonatomic) TransportViewController *yCoor;
@end

TransportViewController.h

@class MapViewController; // << not even needed, as MapViewController
                          //    does not exist in this header

@interface TransportViewController : UIViewController<UITextFieldDelegate>
{
    double xGPSCoordinate;
    double yGPSCoordinate;
}
@property(nonatomic)double xGPSCoordinate;
@property(nonatomic)double yGPSCoordinate;
@end

その後、必要に応じてファイルに#import入れることができます。*.m

前方宣言をよく読んでください。どこでも使用できるわけではありませんが、#importの代わりにヘッダーで頻繁に使用でき、ビルド時間を大幅に短縮できます。

于 2012-08-14T03:52:58.030 に答える