进行循环引用导入时出错

Ted*_*tel 9 import compiler-errors objective-c

我的程序运行正常,但我改变了一些东西,现在它有超过48个错误.

我想我知道这个问题,但我不知道如何解决它.我创建了一个名为mViewBasefor all my UIViewControllers 的类来源自.

我决定在我的所有视图的底部都有一个导航栏,转到其他视图控制器cakes2.所以cake2.h导入mViewBase,并mViewBase导入cakes2.h

您必须能够在Objective-C中执行此操作.有没有人知道我能做什么?

我的mViewBase.h文件:

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

@interface mViewBase : UIViewController {
    UIView *mBackground;
    UIView *mBackArrow;
    UITextView *mTitle;
    //    Cakes2 *mCakes;
}

-(void) aSetTitle: (NSString *) NewTitle;
-(IBAction) aBack: (id) tender;
-(IBAction) aHome: (id) sender;
-(IBAction) aCakes: (id) sender;
-(IBAction) aCall: (id) sender;
-(IBAction) aDirections: (id) sender;
@end
Run Code Online (Sandbox Code Playgroud)

我的Cakes2.h文件:

#import <UIKit/UIKit.h>
#import "Gallery.h"
#import "WebView.h"
#import "mViewBase.h" // Circular reference! But I need it

@interface Cakes2 : mViewBase <UITableViewDelegate, UITableViewDataSource> {
    //    Gallery *mGallery;
    IBOutlet UITableView *mMenu;
    // WebView *mWebView;
}
-(IBAction) aOpenWeb;
@end
Run Code Online (Sandbox Code Playgroud)

Cal*_*leb 19

您可以在其中一个头文件中使用前向声明,以避免导入其他头.例如,在mViewBase.h中,您可以说:

@class Cakes2;
Run Code Online (Sandbox Code Playgroud)

现在编译器知道"Cakes2"引用了一个类,并且您不需要导入整个Cakes2.h文件.

  • 嗨,这就是我把头文件中的@class和m文件中的导入诀窍:)谢谢你,特德 (6认同)