85

UIScrollView(またはその派生クラス)がスクロールしている間、実行中のすべてがスクロールが終了するまで一時停止しているように見えますNSTimers

これを回避する方法はありますか?スレッド?優先順位の設定?なんでも?

4

8 に答える 8

204

簡単で簡単に実装できるソリューションは、次のとおりです。

NSTimer *timer = [NSTimer timerWithTimeInterval:... 
                                         target:...
                                       selector:....
                                       userInfo:...
                                        repeats:...];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
于 2010-04-30T04:23:32.757 に答える
8

はい、ポールの言うとおりです。これは実行ループの問題です。具体的には、NSRunLoop メソッドを利用する必要があります。

- (void)addTimer:(NSTimer *)aTimer forMode:(NSString *)mode
于 2009-03-03T14:42:38.627 に答える
7

これは迅速なバージョンです。

timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: aSelector, userInfo: nil, repeats: true)
            NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
于 2016-01-05T05:56:23.207 に答える
7

スクロール中にタイマーを起動する場合は、別のスレッドと別の実行ループを実行する必要があります。タイマーはイベント ループの一部として処理されるため、ビューのスクロール処理で忙しい場合は、タイマーにアクセスすることはできません。ただし、他のスレッドでタイマーを実行することによるパフォーマンス/バッテリーのペナルティは、このケースを処理する価値がないかもしれません。

于 2009-03-03T04:44:07.287 に答える