Ios 如何制作持久(支持多任务)秒表?

Ios 如何制作持久(支持多任务)秒表?,ios,nstimer,multitasking,Ios,Nstimer,Multitasking,我正在用NSTimer做秒表。如果用户切换到其他应用程序,我希望它继续工作,但现在它只在应用程序运行时工作。我认为,在计时器启动时记录时间戳可能很简单,但我不太清楚如何与在中间暂停/重新启动计时器的能力相协调。p> 我的代码: -(IBAction)start; { if(sharedInstance.timer == nil){ sharedInstance.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:sel

我正在用NSTimer做秒表。如果用户切换到其他应用程序,我希望它继续工作,但现在它只在应用程序运行时工作。我认为,在计时器启动时记录时间戳可能很简单,但我不太清楚如何与在中间暂停/重新启动计时器的能力相协调。p> 我的代码:

-(IBAction)start;
{
    if(sharedInstance.timer == nil){
    sharedInstance.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self     selector:@selector(showActivity) userInfo:nil repeats:YES];
    sharedInstance.timerRunning = YES;
    }
}


-(IBAction)stop;
{
    [sharedInstance.timer invalidate];
    sharedInstance.timer = nil;
    sharedInstance.timerRunning = NO;
}


-(void)showActivity;
{
    sharedInstance.elapsedTime += 1;

    int hours = sharedInstance.elapsedTime / 3600 ;
    int minutes = sharedInstance.elapsedTime / 60 - hours * 60; 
    int seconds = sharedInstance.elapsedTime - hours * 3600 - minutes * 60;

    sharedInstance.timeString = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
    self.readout.text = sharedInstance.timeString;
}

-(void)viewDidLoad {
    sharedInstance = [DataSingleton sharedInstance];
    if (sharedInstance.timeString==nil) {
    sharedInstance.timeString=@"00:00:00";
    }
    self.readout.text = sharedInstance.timeString;
    [sharedInstance.timer invalidate];
    sharedInstance.timer = nil;
    if(sharedInstance.timerRunning) {
        [self start];
    }
    [super viewDidLoad];
}

-(void)reset {
    [self stop];
    sharedInstance.elapsedTime = 0;
    sharedInstance.timeString = @"00:00:00";
    self.readout.text = sharedInstance.timeString;
} 

每次调用showActivity时,您都可以得到一个新的时间戳,并从中减去旧的时间戳,以及时获得更改。然后将其添加到elapsedTime,而不是1。

我可以看看您的DataSingleton的样子吗?:)