1

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

我在某个地方出错了,但无法弄清楚。

4

1 回答 1

0

只是一个疏忽。我在从中检索变量之前初始化了视图控制器NSUserDefaults

于 2012-11-19T00:51:12.967 回答