在我的app委托中,我有多个NSStrings,声明如此
@property (nonatomic, retain) NSString *aString;
当我的视图第一次加载时,字符串值被设置
appDelegate.aString = @"aValue";
appDelegate
self.appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
这一切都很好,但出于某种原因,它在我的iPad上不起作用。它适用于iPad和iPhone的模拟器(它是通用的)和我的iPhone。它早先工作,我没有搞砸它。每当我在设置后尝试访问该值时,它将返回null。关于我应该做什么的任何想法?
编辑1:我要做的是读取属性列表,如果值为null,我将手动设置如下:
if (appDelegate.aString == (id)[NSNull null] || appDelegate.aString.length == 0 ) {
appDelegate.aString = @"aValue";
}
我在上面的if语句中放了一个NSLog,所以我知道代码正在执行,但是当我尝试记录aString时,它仍然是null,即使我只是设置它。
我还要补充一点,所有设备都运行4.3.x。
编辑2:如果我在applicationDidFinishLaunching中设置了值,则它不会出现null,这意味着必须在从视图控制器设置值时出现问题。我不明白为什么它只能在一台设备上运行。
答案 0 :(得分:0)
除非您在其他地方明确使用NSNull,否则请尝试使用if (appDelegate.aString == nil || ...
,或者只使用if (!appDelegate.aString || ...
。
答案 1 :(得分:0)
在appdelegate中添加名称为
的方法- (void) setaString:(NSString*) str{
//add logs and breakpoints here
}
机会是 1.其他一些东西是访问字符串。 2.字符串正在某处释放。