このランループを永遠に実行しようとしています(少なくとも1日は永遠に実行されない場合)ランループに次の関数を使用しています[self.runLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:100000]];
問題は、アプリが 3 時間後にクラッシュすることです。誰か助けてもらえますか?
このランループを永遠に実行しようとしています(少なくとも1日は永遠に実行されない場合)ランループに次の関数を使用しています[self.runLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:100000]];
問題は、アプリが 3 時間後にクラッシュすることです。誰か助けてもらえますか?
永続的に実行したい場合 (タイマーや入力ソースを接続していると仮定して)、次を使用できます。
[self.runLoop run];
現在の構成を維持したい場合は、次を使用できます。
[self.runLoop runUntilDate:[NSDate distantFuture]];
Apple が次のパターンを使用しているのを見たことがあります (たとえば、Threading Programming Guideのリスト 3-14 ;NSOperation
オブジェクトが完了するのを待ちたい非同期操作を呼び出すときに、この構造を使用するのを見たこともあります):
// Let the run loop process things.
do
{
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
beforeDate:[NSDate distantFuture]];
}
while ( ... ); // in here you have whatever condition you want to check for
試してみてください[NSDate distantFuture]
。ドキュメントから: 「遠い未来の日付を表す NSDate オブジェクト (世紀単位)」。