저는 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
나는 그것을 사랑한다. \t 도와주세요 5 더 가야 .. – Mel