这个错误很奇怪。我在应用程序委托中有一堆属性,我可以毫无问题地访问它们。我的代码在没有 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];
}
我的类.h
@class AppDelegate;
@interface MyClass: UIResponder {
AppDelegate *appDelegate;
}
我的班级.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 中实例化之后传递对象,而不是直接从 MyCLass 中的 AppDelegate 获取(如上所示)。我还是很疑惑,一定是编译器的bug。我仍然对如何使原始代码工作非常感兴趣。