我需要在启动时初始化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);
}
输出文字是
没有任何警告或错误。
我遇到的问题有点复杂,但要点保持不变,我甚至无法让上面的例子工作。任何提示都表示赞赏。
答案 0 :(得分:1)
添加
@synthesize someString;
之后
@implementation AppDelegate
在你的app-delegate .m文件中。
答案 1 :(得分:1)
您应该使用_someString而不是someString或使用Andrey的答案解决方案,在您的代码属性someString和ivar someString没有任何连接