2012年9月20日木曜日

NSTimerのバグ

NSTimerの時間指定は基本的に秒単位である。

例えば

+(NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

のsecondsは秒単位なわけだが、0より大きく1より小さな数を指定すると1秒以下でも指定できる。

ここで、仕様書を読むと「負数を与えるとその負号を取った値を0.1ms単位として使う」と書いてある。これをそのまま理解すると例えば、-1000と指定すると1000*0.1=100msを指定したことになるはずである。

がしかし、実際にはそうはならない。
非常に短い時間でタイマーがかかってしまう。
NSTimerそのもののバグか、仕様書の間違いである。
少なくともiOS5.1まではこのとおりだ。

仕方ないので、0.??の値を使っている。

早々に正しい仕様を公開して欲しいところ。というか、仕様書通りに動くように直してくれ、Apple。

0 件のコメント:

コメントを投稿