1

iPhone開発は初めてなので、ご容赦ください。別のView Controllerからに格納されている配列にアクセスしようとしていますが、アクセスするとAppDelegate、配列が空であることがわかります。

呼び出された containerTypeArrayに を作成しNSMutableAarrayました。呼び出さAppDelegateれたメソッドでオブジェクトを使用して配列を作成します。AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

オブジェクトを初期化して初期化した後、配列のサイズは次の NSLog メッセージで確認された 92 です。

NSLog(@"container type size %i", [containerTypeArray count]);

別のView Controllerで配列変数を参照しようとしています。このビュー コントローラーでは、appdelegate.h ファイルをインポートし、ビューの did load メソッドに次のように記述します。

 AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
     NSLog(@"count at load %i", [appDelegate.containerTypeArray count]);

今回は NSLog カウントは 0 です。

誰かが私が間違っていることを教えてもらえますか? ありがとう!

4

1 に答える 1

2

これはapplication:didFinishLaunchingWithOptionsの後に呼び出されるためですviewDidLoad

application:didFinishLaunchingWithOptionsのドキュメント:

このメソッド (および対応する application:didFinishLaunchingWithOptions: メソッド) を使用して、アプリケーションを初期化し、実行する準備をする必要があります。このメソッドは、アプリが起動され、そのメイン ストーリーボードまたは nib ファイルが読み込まれた後、アプリの状態が復元される前に呼び出されます。このメソッドが呼び出された時点では、アプリケーションは非アクティブ状態になっています。

したがって、ビューは application:didFinishLaunchingWithOptions メソッドが呼び出される前にロードされます。

これらのメソッドのタイミングについては、関連する SO の質問があります。

于 2013-02-11T20:57:51.580 に答える