Я новичок в разработке 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 help 5 еще ... – Mel