0

TableView の reloadData に問題がありました。何をリロードするかをreloadDataに伝えるために使用する変数がNULLにリセットされていることを最終的に確認できました。

ClassAppDelegate.h次のように変数を追加しました。

@property (nonatomic, retain) id globalid;

次に、次のように合成しClassAppDelegate.mます。

@synthesize globalid;

次に、(メソッド内で) 使用する必要があるクラスとメソッドの変数にアクセスします。

NDSClassAppDelegate *detailControllerAD = [[NDSClassAppDelegate alloc] init];

そして、この方法でそれを使用して、そのメソッドで変数を取得します。

NSLog(@"GlobalID at FetchTweets %@", detailControllerAD.globalid);

reloadData で変数がリセットされるのはなぜですか?

4

3 に答える 3

2

アプリ デリゲート オブジェクトをインスタンス化するべきではありません。アプリケーションは起動時にUIApplicationMain()関数の一部として与えられ、アプリケーションの存続期間中存続する必要があります。[[UIApplication sharedApplication] delegate]デリゲートを取得するために使用しますNDSClassAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]。次に、プロパティを設定または読み取る必要がある場所globalidで、アプリケーション デリゲートのこのインスタンスに設定します。

インスタンス変数 (通常、プロパティの元になる変数) は、オブジェクトのインスタンス間で個別に異なるため、あるオブジェクトに値を保存してから別のオブジェクトに同じ値を表示することはできません。

于 2013-03-04T08:14:47.957 に答える
0

この NDSClassAppDelegate *detailControllerAD = [[NDSClassAppDelegate alloc] init]; を使用すると、アプリ デリゲートの新しいインスタンスが作成されました。

これを使って

[[UIApplication sharedApplication] delegate] アプリ デリゲートの既存のインスタンスを取得します。

于 2013-03-04T08:18:35.633 に答える
0

上記の方法を使用して、アプリケーション全体でデータを共有できます。以前のアプリケーションの 1 つにも同じ要件がありました。two three forum で、アプリケーションを介したデータの共有について読みました。しかし、彼らによると、アプリケーション デリゲートをモデル オブジェクトとして使用することはデリゲート関連のものではないため、アプリケーション レベルでデータを格納することはお勧めできません。したがって、よりクリーンなアプローチは、シングルトン クラスを使用することです。シングルトン クラスを 1 つ作成して、すべての変数の状態を保持します。それがよりクリーンなアプローチになります。

于 2013-03-04T08:48:15.673 に答える