在didFinishLaunchingWithOptionsApp 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返回。viewDidLoadnil
我在某个地方出错了,但无法弄清楚。