改訂...
アプリの核心は、データベース サーバーとの通信です。サーバーからアプリへの応答はすべて XML です。いくつかの画面があります。たとえば、画面 1 にはユーザーの情報が一覧表示され、画面 2 にはユーザーの過去の取引が一覧表示され、新しい取引が許可されます。
ここに私の AppDelegate からのいくつかのコードがあります:
StartViewController *svc = [[StartViewController alloc] init];
TradeViewController *tvc = [[TradeViewController alloc] init];
CashViewController *cvc = [[CashViewController alloc] init];
ComViewController *covc = [[ComViewController alloc] init];
PrefsViewController *pvc = [[PrefsViewController alloc] init];
NSMutableArray *tabBarViewControllers = [[NSMutableArray alloc] initWithCapacity:5];
UITabBarController *tabBarController = [[UITabBarController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:svc];
[tabBarViewControllers addObject:navigationController];
navigationController = nil;
navigationController = [[UINavigationController alloc] initWithRootViewController:tvc];
[tabBarViewControllers addObject:navigationController];
navigationController = nil;
navigationController = [[UINavigationController alloc] initWithRootViewController:cvc];
[tabBarViewControllers addObject:navigationController];
navigationController = nil;
navigationController = [[UINavigationController alloc] initWithRootViewController:covc];
[tabBarViewControllers addObject:navigationController];
navigationController = nil;
navigationController = [[UINavigationController alloc] initWithRootViewController:pvc];
[tabBarViewControllers addObject:navigationController];
navigationController = nil;
[tabBarController setViewControllers:tabBarViewControllers];
[[self window] setRootViewController:tabBarController];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
MVC スタイルに固執しようとして、すべての「処理」を行うシングルトン クラスがあります。
壁にぶつかった例です。ユーザーは画面 5 で電子メール アドレスを変更できます。新しい電子メール アドレスをテキスト フィールドに入力し、保存ボタンをクリックします。次に、ボタンはシングルトン クラスからメソッドを呼び出します。このメソッドは新しい電子メール アドレスをサーバーに送信し、(URL を介して) 変更を確認する XML 応答を受信します。
ここに私の問題があります: 1. シングルトン クラス メソッド呼び出しを行う前に、View Controller からスピナーを開始します - しかし、アプリからサーバーへの送受信がいつ終了するかわかりません。適切なタイミングでスピナーを停止するにはどうすればよいですか? 私はシングルトンクラスからそれをすることはできません、私はそれを試しました. 私が知っていることから、それはVC内からでなければならないか、またはシングルトンクラスからVC出力を変更する方法はありますか?
シングルトン クラス NSURLConnection がすべての通信を処理しています。簡単な電子メールの変更から、トランザクション テーブルの更新まで、あらゆることを行います。これは私には間違っているように思われ、誰が何を呼び出しているかを追跡するのが非常に難しくなります。繰り返しますが、私は MVC の私の解釈に従っていきます。すべての VC に NSURLConnection を用意し、それらのクラスで何らかの処理を行う方がはるかに簡単だと思います。ただし、それは MVC(ish) ではありません。
すべての VC に値を割り当てるために使用するシングルトン クラスには、100 近くの変数、配列などがあります。これも私には間違っているように思えますが、他の方法は考えられません。