このエラーは非常に奇妙です。アプリデリゲートには、問題なくアクセスできるプロパティがたくさんあります。私のコードは ARC がなくても正常に動作しましたが、ARC をオンにすると、この非常に奇妙なエラーが発生します。タイプ「AppDelegate *」のオブジェクトにプロパティ「navigationController」が見つかりません
これを除いて、他の多くのプロパティは問題なく機能します。
私はすでにすべてをきれいにして、Xcodeを再起動しました。
コードは次のとおりです。
AppDelegate.h:
@interface AppDelegate : UIResponder <UINavigationControllerDelegate> {
UINavigationController *navigationController;
NSString *appName;
}
@property (strong, nonatomic) NSString *appName;
@property (strong, nonatomic) UINavigationController *navigationController;
AppDelegate.m
#import "AppDelegate.h"
@synthesize navigationController, appName;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
appName = [NSString stringWithString:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]];
navigationController = [[UINavigationController alloc] initWithRootViewController:self.startViewController];
}
MyClass.h
@class AppDelegate;
@interface MyClass: UIResponder {
AppDelegate *appDelegate;
}
MyClass.m
#import "AppDelegate.h"
#import "MyClass.h"
@implementation MyClass
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[self initFacebook];
}
return self;
}
- (void) doStuff {
NSLog(@"App Name:%@",appDelegate.appName); //this works fine
//This one doesn't
UINavigationController *myNavigationController = appDelegate.navigationController;
}
更新: 回避策を実行しました。基本的に、MyClass で navigationViewController というプロパティを作成し、MyCLass で AppDelegate から直接取得するのではなく、AppDelegate で MyClass をインスタンス化した後にオブジェクトを渡します (上記のように)。私はまだ困惑しています。コンパイラのバグに違いありません。元のコードを機能させる方法については、今でも非常に興味があります。