多くのビューを持つアプリケーションがあります(タブバーコントローラを使用しています)。ユーザーが表示している現在のビューとは独立して、同時の非同期HTTP要求を作成したい。 http要求が応答されたら、ユーザーインターフェイスを更新してから、再度要求します。私は、UIViewControllerのサブクラス内のコードを記述すると、すべて正常に動作します。ユーザーが表示しているタブを知らなくても、私のコードをどこに書くことができますか?私はスレッドを使用しないようにしたいと思います。それは可能ですか?バックグラウンドでの複数の非同期HTTP要求iPhone
私はhttp要求を受け取り、何か新しいものがあるときに応答するWebサービスを作った。だから、私は新しい情報を要求し、Webサービスのウィンドウを開いて私に話をします。そうして私は "永続的な"接続を行います。
最後に、自分のモデルに変更が加えられたことを通知する最も良い方法は何ですか。 NSNotification?委任?
UPDATE
以下のコードは、任意の応答を受信しません。それはBAD_ACCESSを受け取り、クラッシュします。 、NSURLConnectionDelegateクラスを作成し、モデルの代理人として、そのクラスを設定し、UIを更新するためにそれを使用する:returningResponse:エラー手動sendSynchronousRequestを呼び出さない限り
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
// Request Data
ConnectionHandler *connectionHandler = [[ConnectionHandler alloc] init];
[connectionHandler requestSO];
[connectionHandler requestSopen];
// Make Root View Controller
MainViewController *mainViewcontroller = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
[self.window setRootViewController:mainViewcontroller];
//
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
スレッドを避けるのはなぜ間違っていますか? –
別のバックグラウンドスレッド(メインスレッド以外)でリクエストを実行すると、アプリのユーザーインターフェイスが応答しやすくなります。メインスレッドのすべてのプロセスを実行しているため、あなたのUIが非常に反応しない場合は、アプリケーションがOSによって殺される可能性があります。 http://www.raywenderlich.com/4295/multithreading-and-grandcentral-dispatch-on-ios-for-beginners-tutorialを参照してください。 – ader