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(正しい文字列が得られます)。さらにnil、viewDidLoadメソッドでも返されます。self.appDelegateそのため、初期化してから文字列をチェックしようとしましviewDidLoadたが、それでもnil.
私はどこかで間違っていましたが、それを理解することはできません。