に電話するのは一般的に良い考え-[NSRunLoop runUntilDate:]
ですか?問題なく動作しているように見えますが、実行ループ内から実行するように実行ループに指示するのは緊張します。
より詳しい情報:
現在、REST サービスからデータをフェッチするプロジェクトがあります。取得する必要がある重要な情報の 1 つは、有効なデータを含む日付の範囲です。これは非常に小さなデータで、一度だけ取得する必要があるため、これを処理する最善の方法は、ローカル変数がnil
. 私は と を使用ASIHTTPRequest
しているASINetworkQueue
ため、デフォルトではすべてが非同期であり、これが機能するためには、データがダウンロードされて処理されるまで、このプロパティを返すことはできません。これが私のコードの概要です。変数の名前は、罪のない人を保護するために変更されています。
__block BOOL isWorking = YES;
__block ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:/*actual URL*/] autorelease];
[request setCompletionBlock:^{
// set local variable
isWorking = NO;
}];
[request setFailedBlock:^{
// show alert to user
isWorking = NO;
}];
[queue addOperation:request];
while (isWorking) {
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
}
繰り返しますが、これはうまく機能しているようです。このアプローチを使用する際に潜在的な問題はありますか?