【Objective-C】NSTimer を別スレッドにて実行する方法

先日、タイマーにて時間を計っている時に、

テーブルのセルをスクロール時にタイマーが停止してしまう

問題が発生し、解決方法を調査しました。

まず最初、下記の方法にて設定していました。

どうも、この方法だと、メインスレッドにて動作しているらしく、

UIの操作もメインスレッドのため、UI操作時はタイマーが

止まってしまいます。

特にひどいのが、

UIScrollVIew

UITableVIew

でした。

そこで、NSRunLoop へ登録することにしました。

ちなみに、NSRunLoop へ登録する場合は、

timerWithTimeInterval

を利用します。(この時点では、タイマーは開始されない)

はだめで、

NSDefaultRunLoopMode だと、メインメッソドにて

動作するようです。

よって、別スレッドにてタイマーを処理させたい場合は、

下記にて、別スレッド動作しました。

これにて、UI操作時もタイマー処理がされるようになりました。