NSTimer は、ほとんどの目的で問題ありません。正確ではありません - 期間は設定したものよりもわずかに長くなりますが、良好な状態ではごくわずかです - ミリ秒と考えてください。ただし、NSTimer は runloop を介して起動するため、その精度はその runloop がビジーでないことに依存します。システムがビジー状態の場合、タイマーの期間がわずかに拡大することはありますが、独自のスレッドに専用のランループを配置することで問題を最小限に抑えることができます。
そのため、CPU 速度と他のそのような要因との間に本質的な関係はありませんが、より高速なハードウェアはビジー状態にならないため、より良い状態を保つことができます。
また、繰り返し NSTimer が位相シフトしないことにも注意してください。15 秒と同じくらい正確に 1 秒の間隔に設定されます。唯一の注意点は、次の火災が発生するときにハンドラーがまだ実行されている場合、その火災はまったく発生しないということです。たとえば、1.1 秒かかる場合、発砲間のギャップは最大 2 秒になります。
runloops と NSTimers の代替は、dispatch_after です。ただし、これ以上正確になる可能性は低く、そのスキッドは、起動時にビジーでないターゲット キュー (おそらくデフォルトの同時キューの 1 つ) に左右されます。