私のアプリでは微妙な状況があります。私はアプリケーションでサーバーコールをしていますサーバーの応答に基づいてメソッドを起動して終了しました私は別のビューをロードする必要があります.myアプリケーションはシミュレータでうまく動作していますが、アプリケーションがサーバーの応答を取得するために時間がかかり、サーバコールを実行するためにNSThreadを試しましたが、サーバからの応答が得られるまで画面が待機しています.http://www.google.com/support/bin/answer.py?hl=ja&hl=ja app deleagteメソッドから項目を移動することはできますか?appdelegateを外に移動する
答えて
より良い方法は、一時的なビューを表示し、非同期を要求するか、バックグラウンドスレッド上で実行します。あまりにも長い間メインスレッドをブロックすると、iOSはアプリを終了させます(これはあなたの場合に起こり得ることです)。ユーザーは、10秒または20秒を過ごすアプリを使用して、便利なディスプレイをアップ。サーバーから応答を受け取ったら、ディスプレイを適切に再構成することができます。
ところで、次回は明示的に質問を述べることをお勧めします。質問が現れたときにあなたが求めていることを知るのはちょっと難しいです。
NSURLConnectionはあなたの友人です。これを解決する最善の方法は、NSURLConnectionを使用して非同期にサーバーコールを行うことです。
アップルデベロッパーコネクションにSample Codeがあります。これはUITableViewの各行の画像を非同期的にダウンロードするため、UIがより反応的です。だから、そのコードを見れば、コードをリファクタリングできるはずです。
サーバレスポンスを非同期に読み込むと、メインスレッドを20秒以上ブロックしているため、アプリがiOSランタイムによってシャットダウンされることがなくなります。
iOS 4.0以降をターゲットにしている場合は、Grand Central Dispatchを使用して、バックグラウンドスレッドでネットワークコールを発信できます。ここに簡単な例があります。
// Create a dispatch queue
dispatch_queue_t networkQueue = dispatch_queue_create("NetworkQueue", 0);
dispatch_async(networkQueue,^{
// Start your network task here.
// Now when it completes we will dispatch back to the main queue
// and you can perform UI updates
dispatch_async(dispatch_get_main_queue(),^{
// Perform UI updates here on the main thread
};
// Release your dispatch queue
dispatch_release(networkQueue);
};
これは、あなたがすでに画面にいくつかの予備未実装のUIを入れていることを確認しに行っている間、。また、UIApplicationのnetworkActivityIndicatorを適切に表示したり、非表示にする必要があります。あなたはこれが非同期要求である
[[NSURLConnection alloc]initWithRequest:request delegate:self];
を呼び出す必要が
+1 for GCD。しかし、それはすべてのOSバージョンでサポートされていますか? –
いいえ、私が言ったように、あなたがiOSバージョン4.0以上をターゲットにしている場合にのみ利用可能です。 –
、あなたはappdelegateでNSURLConnectionのデリゲートメソッドを実装することができます。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
- 1. objective-c:UniversalアプリでAppDelegateから移動するには?
- 2. オブジェクトが画面外に移動する
- 3. アプリが画面外に移動する
- 4. スウィフトダイナミックテーブルテキストがセル幅外に移動する
- 5. AppDelegateの外でUINavigationControllerを使用するには?
- 6. Google Firebaseのログインが完了した後、AppDelegateからViewControllerに移動
- 7. 範囲外に移動する前にディレクトリ_iteratorを停止する
- 8. StartActivityforResultを外部クラスに移動
- 9. Twitter JSウィジェットコードを外部ファイルに移動
- 10. MVC4:SQLServerセッションを外部ホストに移動
- 11. WhatsAppメディアファイルを外部SDに移動
- 12. インラインJavascriptを外部.jsファイルに移動
- 13. Androidのファイルを外部デバイスに移動
- 14. インラインCSSを外部スタイルシートに移動
- 15. パブリックフォルダの外にあるファイルを移動するには?
- 16. 移動外のルータ・アウトレット
- 17. 除外付き移動コマンド
- 18. CGIIの外に移動したときにUIImageViewをクリップする
- 19. tkinterで親の外にボタンを移動するには?
- 20. MySQLデータベースを外付けハードディスクに移動するには?
- 21. 例外のあるフォルダにファイルを移動する
- 22. Extjsは、画面外に移動するときにツールバーコンポーネントを次の行に移動します。
- 23. ExtJS外部のファイルにカスタムバリデーションを移動する
- 24. シェーダスクリプトを外部ファイルに移動する方法は?
- 25. CodeigniterのModel、View、Controllerフォルダをアプリケーション外に移動する
- 26. 外部のファイルにスクリプトを移動する
- 27. Symfony 2ファイルアップロード。 (移動中に例外をスローする方法)
- 28. 例外的にファイルを移動する方法
- 29. 内部クラスを外部に移動する方法
- 30. バナーをビューポート内外に移動する(CSSのみ)
サーバーからデータを取得するために同期要求を使用しましたか? – Deeps