Ошибки при импорте циклических ссылок - PullRequest
9 голосов
/ 28 августа 2011

Моя программа работала нормально, но я что-то изменил, и теперь в ней более 48 ошибок.

Мне кажется, я знаю проблему, но не знаю, как ее исправить.Я создал класс с именем mViewBase для всех моих UIViewController s.

Я решил расположить панель навигации внизу всех моих представлений, чтобы перейти к другим контроллерам представлений, называемым cakes2,Таким образом, cakes2.h импортирует mViewBase и mViewBase import 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

Мой файл 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

Ответы [ 2 ]

19 голосов
/ 28 августа 2011

Вы можете использовать предварительную декларацию в одном из ваших файлов заголовков, чтобы избежать необходимости импортировать другой заголовок.Например, в mViewBase.h вы можете сказать:

@class Cakes2;

Теперь компилятор знает, что «Cakes2» относится к классу, и вам не нужно импортировать весь файл Cakes2.h.

0 голосов
/ 28 августа 2011

Я думаю, вам стоит подумать об использовании UITabBarController.Это сделано специально для управления несколькими контроллерами представления с панели в нижней части экрана.

...