如何访问已在ApplicationDelegate中初始化的对象?

时间:2012-09-30 20:44:59

标签: iphone objective-c ios

我需要在启动时初始化AppDelegate中对象的对象。每当我尝试在其他地方访问ivar时,返回的所有内容都为null。

我正在做的事情可以简化为

//AppDelegate.h:
@interface AppDelegate : UIResponder <UIApplicationDelegate> {
    NSString* someString;
}

@property (nonatomic, copy)   NSString* someString;

然后在AppDelegate.m

//AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    someString = @"Hello World!";
    NSLog(@"%@",someString);
}

这是我访问NSString-object时所做的事情

//ViewController.m
- (void)viewDidLoad {
    [super viewDidLoad];
    AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    NSLog(@"%@",delegate.someString);
}

输出文字是

  • 2012-09-30 22:26:45.125 Labor3 [22524:f803] Hello World!
  • 2012-09-30 22:26:45.127 Labor3 [22524:f803](null)

没有任何警告或错误。

我遇到的问题有点复杂,但要点保持不变,我甚至无法让上面的例子工作。任何提示都表示赞赏。

2 个答案:

答案 0 :(得分:1)

添加

@synthesize someString;

之后

@implementation AppDelegate
在你的app-delegate .m文件中

答案 1 :(得分:1)

您应该使用_someString而不是someString或使用Andrey的答案解决方案,在您的代码属性someString和ivar someString没有任何连接