0

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

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

//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 对象时所做的

//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] 你好世界!
  • 2012-09-30 22:26:45.127 Labor3[22524:f803](空)

没有任何警告或错误。

我遇到的问题有点复杂,但基本要素保持不变,我什至无法让上面的示例正常工作。任何提示表示赞赏。

4

2 回答 2

1

添加

@synthesize someString;

@implementation AppDelegate

在您的 app-delegate .m 文件中。

于 2012-09-30T20:49:12.717 回答
1

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

于 2012-09-30T20:52:56.363 回答