我是iOS開發新手,遇到頭文件問題。我遇到了我的頭文件的循環依賴問題。我的應用程序委託類包含一個指向我的視圖控制器,因爲我必須設置視圖控制器在我的didFinishLaunchingWithOptions方法的屬性之一...如何解決這個循環依賴?
//appDelegate.h //DISCLAIMER: THIS IS UNTESTED CODE AND WRITTEN ON THE FLY TO ILLUSTRATE MY POINT
#import <UIKit/UIKit.h>
#import "MyViewController.h"
@interface appDelegate
NSManagedObjectContext *managedObjectContext;
MyViewController *viewController;
BOOL myFlag;
@end
//appDelegate.m
@implementation appDelegate
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
viewController.managedObjectContext = self.managedObjectContext;
.
.
.
}
@end
而且在我的視圖控制器中,我引用了「myFlag」屬性,這是在我的應用程序委託...
//MyViewController.h
#import "appDelegate.h" //<---circular dependency, causing "Expected specifier-qualifier-list before MyViewController" errors in my appDelegate header file
@interface MyViewController: UIViewController
{
NSManagedObjectContext *managedObjectContext;
}
@end
//MyViewController.m
@import "MyViewController.h"
@implementation MyViewController
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
((appDelegate*)[[UIApplication sharedApplication] delegate]).myFlag = NO;
}
@end
但爲了訪問我的應用程序委託「myFlag」屬性,我需要導入應用程序委託的頭文件。這是導致循環依賴的原因。不知道如何解決這個問題,有沒有人遇到過這個問題?
在此先感謝您的幫助!
+1 ..偉大的問題。 – iwasrobbed 2010-08-15 01:06:19
我喜歡它。 \t 幫助 5更多去.. – Mel 2011-05-18 23:52:54