我一直在尝试构建一个给你0.000的计时器,但我无法做到。
-(IBAction)myMethod{
countDown = [NSTimer scheduledTimerWithTimeInterval:1/1000.0f target:self selector:@selector(flash) userInfo:nil repeats:YES];
}
- (void) flash
{
timeStart += 0.001f;
}
但是当我这样做时,第一个小数位变为秒而不是小数。如果我这样做:
-(IBAction)myMethod{
countDown = [NSTimer scheduledTimerWithTimeInterval:1/1000.0f target:self selector:@selector(flash) userInfo:nil repeats:YES];
}
- (void) flash
{
timeStart += 0.01f;
}
我只得到2位小数。
有关如何使这项工作的任何帮助?
答案 0 :(得分:1)
适合我:
AppDelegate.h:
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate> {
NSTimer *_timer;
float _startTime;
}
@property (assign) IBOutlet NSWindow *window;
- (void)flash:(NSTimer *)timer;
@end
AppDelegate.m:
#import "AppDelegate.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
_startTime = 0.0f;
_timer = [NSTimer scheduledTimerWithTimeInterval:1/1000.0f
target:self
selector:@selector(flash:)
userInfo:nil
repeats:YES];
}
- (void)flash:(NSTimer *)timer {
_startTime += 0.001;
NSLog(@"_startTime=%.3f", _startTime);
}
@end
输出:
2013-10-05 10:03:36.330 TimerTest[86869:303] _startTime=0.001
2013-10-05 10:03:36.331 TimerTest[86869:303] _startTime=0.002
2013-10-05 10:03:36.332 TimerTest[86869:303] _startTime=0.003
...
2013-10-05 10:03:37.609 TimerTest[86869:303] _startTime=0.999
2013-10-05 10:03:37.611 TimerTest[86869:303] _startTime=1.000
2013-10-05 10:03:37.612 TimerTest[86869:303] _startTime=1.001
2013-10-05 10:03:37.612 TimerTest[86869:303] _startTime=1.002
但是请注意,您不能保证计时器实际上每0.001秒发射一次,因此您应该使用不同的时钟机制计算您的增量时间,例如将开始时间保存为绝对时间以及何时触发测量方法差。