別のスレッドを使用して通信を処理するのは良い考えではないと思います。複雑であることは別として、NSURLConnection/NSURLRequest
通信を非同期的に、つまりブロックせずに処理できるため、必要ありません。
詳細には、以下を実行するNSURLRequestを作成できます。
NSURLRequest* yourReq = [NSURLRequest requestWithURL:yourURL];
次に、次のコマンドでNSURLConnectionを作成します。
NSURLConnection* yourConnection = [NSURLConnection connectionWithRequest:yourReq delegate:yourDelegate];
そしてそれを次のように始めます:
[yourConnection start];
データの準備が整うと、UIを更新できるように、デリゲートのメソッドの1つ(、、connectionDidFinishLoading:
または)が呼び出されます。connection:didFailWithError:
これはすべてブロックせずに。
を使用するよりも優れた代替手段は、 ASIHTTPRequestNSURLConnection/NSURLRequest
を使用することです。これは、メモリ管理に関してより回復力があり、優れたキャッシュメカニズムも提供します。
編集:あなたの懸念があなたのモデルがシングルトンであるということであるならば、あなたは代理人を持つことができません、あなたが問題をさらに調べることを提案させてください。
モデルはシングルトンである可能性があり、リクエストのデリゲートは、モデルにアクセスする方法を知っていることを除けば、モデルとは何の関係もない場合があります(モデルがシングルトンであることは非常に簡単です)。
これは、を使用したいくつかのメカニズムで可能NSURLConnection
ですが、を使用すると、それぞれが独自のデリゲートを持つことができるASIHTTPRequest
ため、非常に簡単になります。ASIHTTRequest