2012-03-14 3 views
0

私は起動時にインターネットから情報を取得するアプリを開発中です。コードはdidFinishLaunchWithOptionsにあります。 Wi-Fiや3G接続はすべて正常ですが、接続が遅くなるとアプリがクラッシュします。私はその理由を知っている:iOSはdidFinishLaunchWithOptionsを終了するのに20秒以上かかるアプリを殺す。遅い接続でiosアプリを起動してインターネットからデータを取得する方法

質問は、この状況を解決する正しいアプローチは何ですか?いくつかの例?使用非同期スプラッシュ画面を長時間表示されないはずアップルヒューマンインターフェイスガイドラインによるとhttp://allseeing-i.com/ASIHTTPRequest/

答えて

1

をチェックし、それが期待されます
を呼び出し

どうもありがとう、

カルロス

+0

だから、私は、rootViewControllerのViewDidLoadのデータを取得する必要がありますか?それを行う正しい方法ですか?一方、私の場合は、アプリケーションが表示する必要があるデータを取得しているため、アプリケーションをブロックする方が良いと思うので、データがないと表示できません。 ..ありがとう! – Carlos

+0

私が経験したベストプラクティスは、できるだけ多くの基本UIをdidLoadで準備することです。すべての接続はdidAppearで始まります。これは、迅速かつ責任あるインターフェイスを提供します。いい例があります。ネイティブYouTubeアプリです。それを起動し、少し試して想像してみて、起動中にすべてのタブのすべてのデータを読み込もうとします。印象的ですね。そして、ビデオリストの一番下にあるLoad Moreを押すと、あなたが働いている間にアプリで遊ぶことができます。あなたはできるだけ良い経験としてユーザーを持って来てください:)単純な活動インジケーターでさえ、最初はうまくいくでしょう。 –

+0

ありがとう、明日の朝私はあなたの提案に従うことを試みる! – Carlos

0

ユーザーにアプリケーションをすばやく読み込んでより良い体験を提供します。

これはどういう意味ですか?これは、didFinishLaunchWithOptionsに重いロジックを置くべきではなく、ルートビューコントローラにそれを置き、何らかのインターフェースを表示することを意味します。データのロード中に非同期接続がアプリケーションをブロックしないことが既に示唆されています。そうすれば、ユーザーはインターフェイスで少しでもプレイできるようになります。可能であればキャッシュを使用することを強くお勧めします。

+0

ASIHTTPRequestは期限が切れており、開発中ではありません(ARCサポートなし)。代わりにAFNetworkingまたは同様のフレームワークの使用を検討してください。 – JiaYow

+0

そのプロジェクトはもうアクティブではありません(最終更新:2011年5月15日(v1.8.1))。なぜそれがもはや維持されていないか、今何を使うべきかを知りたければ、ここhttp://allseeing-i.com/%5Brequest_release%5Dを見てください。 – Joe

+0

ありがとうございます。知っておいてよかった。しばらくそのようなものに触れなかった。非同期要求はまだ方法です。 – ssteinberg

関連する問題