在didFinishLaunchingWithOptions
App Delegate 中的方法中,一个字符串myString
是用从NSUserDefaults
(用 确认的NSLog
)检索到的字符串初始化的。我在这个基于选项卡的项目中有多个视图控制器,除了一个之外,它们都可以正常访问应用程序委托变量。此视图控制器与其他视图控制器之间的唯一区别是它是 aUIViewController
而不是 a UITableViewController
(尽管后者继承了)。
在UIViewController
我的初始化中:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if (self.appDelegate.myString == nil)
NSLog(@"nil");
}
return self;
}
奇怪的部分:在initWithNibName
方法中,myString
(以及应用程序委托中的所有其他变量)是nil
. 但是,当我在viewDidAppear
方法中触发它时,它不是nil
(并且我得到了正确的字符串)。此外,它nil
也在viewDidLoad
方法中返回。所以我尝试初始化然后检查字符串,但它仍然self.appDelegate
返回。viewDidLoad
nil
我在某个地方出错了,但无法弄清楚。