NSURLConnectionを使用してデータをダウンロードするNSOperationがありますが、次のようになります。
....
- (void)main
{
....
while (!self.isCancelled && !self.isLoaded)
{
[NSRunloop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NDate distantFutute]];
}
....
}
問題は、接続がハングすることがあり、他のソースが起動していないため、ループが永久に実行され続け、操作をキャンセルする機会がないことです。私の操作キューには1つの操作の制限があるため、すべてがほとんど行き詰まっています。
問題は、この問題に対する最善の解決策は何かということです。
- distantFutureの代わりに、0.5秒などの短い時間を使用します。(おそらく余分なCPUサイクルを食べるでしょう)
- 実行中のスレッドへの参照をivarに保存し、operartionのcancelメソッドのスレッドでperformselectorを介して実行ループをくすぐるようにしてください。(すでに終了していて実行されなくなる実行ループでセレクターをキューに入れると、状況が発生する可能性があります。これにより、私が知る限り、リークが発生します)
または多分別の方法がありますか?