わかった。私は周りを見回しましたが、私の問題に対する正確な答えは見つかりませんでした。
単体テスト (メインの実行ではない) でタイムアウト ハンドラーをテストしようとしています。
問題は[NSRunLoop mainRunLoop]
、標準の実行のように単体テストで実行されていないことです。
私はこの方法でタイムアウトを行います:
NSTimer *pTimeoutHandler = [NSTimer
timerWithTimeInterval:2.0
target:self
selector:@selector(timeoutHandler:)
userInfo:nil
repeats:NO
];
[[NSRunLoop mainRunLoop] addTimer:pTimeoutHandler forMode:NSRunLoopCommonModes];
これは標準実行で機能します。これは、タイムアウトを設定するための推奨される方法です。
ただし、テスト実行では、これは機能しません。timeoutHandler:(NSTimer*)timer
ルーチンが呼び出されることはありません。
何かが実行ループに干渉しているように見えます。
実行と単体テストの両方でタイムアウトを機能させる方法はありますか?