1

didFinishLaunchingWithOptionsApp DelegateのメソッドではmyString、文字列が取得された文字列で初期化されますNSUserDefaults( で確認されますNSLog)。このタブベースのプロジェクトには複数のView Controllerがあり、1つを除いて、すべてがアプリデリゲート変数に問題なくアクセスしています。このビュー コントローラと他のビュー コントローラの唯一の違いは、 (後者は継承されますが) ではUIViewControllerなくであるということです。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(正しい文字列が得られます)。さらにnilviewDidLoadメソッドでも返されます。self.appDelegateそのため、初期化してから文字列をチェックしようとしましviewDidLoadたが、それでもnil.

私はどこかで間違っていましたが、それを理解することはできません。

4

1 に答える 1

0

ただの見落とし。から変数を取得する前に、View Controller を初期化しましたNSUserDefaults

于 2012-11-19T00:51:12.967 に答える