我是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
Run Code Online (Sandbox Code Playgroud)
在我的视图控制器中,我引用了"myFlag"属性,这是我的app委托...
//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
Run Code Online (Sandbox Code Playgroud)
但是为了访问我的app委托中的"myFlag"属性,我需要导入app delegate的头文件.这就是导致循环依赖的原因.不知道如何解决这个问题,有没有人碰到这个?
在此先感谢您的帮助!
ken*_*ytm 18
不要#import "MyViewController.h"进去appDelegate.h.相反,向前声明该类.
@class MyViewController;
@interface appDelegate
NSManagedObjectContext *managedObjectContext;
MyViewController *viewController;
BOOL myFlag;
@end
Run Code Online (Sandbox Code Playgroud)
此外,您不必#import "appDelegate.h"在MyViewController.h,如果你需要的是引用myFlag的财产实施.而是将其导入MyViewController.m文件中.
| 归档时间: |
|
| 查看次数: |
5531 次 |
| 最近记录: |