1

私は数か月前に iPhone Developer Tech Talk に行き、そこにいる専門家の 1 人に、iPhone に NSHost がないことについて尋ねました。私が iPhone に移植していた一部のコードでは、ネットワーク コード全体で NSHost を大幅に使用していました。

NSHost は iPhone 上にあると言われましたが、プライベートです。また、NSHost は同期 API であり、とにかく使用すべきではないと言われました。(おまけとして、なぜそれを使用すべきではないのかを誰かが詳しく説明できれば、それは素晴らしいことです。)

メイン スレッドで同期 API を使用する場合の注意点は、完了するまでブロックするという点です。これはネットワーク コードでは決して良いことではありません。API がスレッドを大量にブロックする原因となる要因が非常に多いためです。時間の。

私の解決策は、CFHost の非同期解決関数のラッパーを作成することでした。

結果は非常にうまく機能し、パブリック ドメインにリリースすることを検討しています。

しかし、私の質問は次のとおりです。私のアプリは、接続フェーズ中に実行ごとに 1 回だけホスト名を解決し、残りのセッションではそれをキャッシュするとします。解決している間、モーダル画面が表示され、ユーザーに素敵なスピナーで「接続中」と通知されます。

解決が非同期であるかどうかは本当に重要ですか?? とにかくユーザーは接続を待つ必要があり、解決は最初の接続でのみ行われます。以降の接続では、キャッシュされた解決結果が使用されます。

同期でよいのはいつで、非同期でよいのはいつですか?

4

1 に答える 1

2

同期呼び出し中にUIもブロックされるため、優れたスピナーは回転しません。もちろん、別のスレッドで呼び出しを行うことはできますが、その場合は、非同期呼び出しと基本的に同じことを行います。

于 2010-03-14T16:22:21.947 に答える