Wie löse ich diese zirkuläre Abhängigkeit auf?
Ich bin neu in der iOS-Entwicklung und habe ein Problem mit meinen Header-Dateien. Ich habe ein zirkuläres Abhängigkeitsproblem mit meinen Header-Dateien. Meine Application-Delegate-Klasse enthält einen Zeiger auf meinen View-Controller, da ich in meiner didFinishLaunchingWithOptions-Methode eine der Eigenschaften des View-Controllers festlegen muss ...
//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
Und in meinem View Controller verweise ich auf die "myFlag" -Eigenschaft, die sich in meinem App-Delegaten befindet ...
//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
Aber um auf die Eigenschaft "myFlag" in meinem App-Delegaten zuzugreifen, muss ich die Header-Datei des App-Delegaten importieren. Dies ist der Grund für die zirkuläre Abhängigkeit. Sie sind sich nicht sicher, wie Sie das beheben können?
Vielen Dank im Voraus für Ihre Hilfe