在触发函数时创建计时器

时间:2009-09-14 07:55:52

标签: iphone objective-c nsdate

我想创建一些计时器,它会花费时间来触发不同类型的函数,但到目前为止我还没有运气。我假设我应该使用NSDate对象,到目前为止我已经这样做了。

我已经创建了几个函数

-(void)startTime:(id)sender
{
    starttime = [NSDate date];
    **[starttime retain];**   
    NSLog(@"show me the starttime %f", starttime);
}

-(void)endTime:(id)sender
{
    endtime = [NSDate date];
    **[endtime retain];**
    NSLog(@"show me the endtime %f", endtime);
}

-(void)timeInterval:(id)sender
{
    NSTimeInterval interval = [ starttime timeIntervalSinceDate:endtime];   
    NSLog(@"let me see the timeinterval between now and then %f", interval);
}

例如,当我按下播放电影的播放按钮时 我将放置starttime函数

-(void)playMovie:(id)sender
{
 [self startTime:(id)sender];
[self callMovie];
}

当我按下电影的停止按钮时,stopfunction将被调用timeInterval功能

-(void)stopMovie:(id)sender
{
[self endTime:(id)sender]; 
[self myMovie];

[self timeInterval:(id)sender];
}

然而它似乎不起作用。如果我在3秒后按下停止按钮,我会假设我的 函数timeInterval将输出3秒。不幸的是无济于事。 发生了什么,我做错了什么?

修改

感谢您的回复。 我在代码片段中做了一些调整。

然而,我似乎犯了一个至关重要的错误。我没有保留endtimestarttime个变量,这似乎解决了我的问题。

3 个答案:

答案 0 :(得分:1)

使用示例计时功能和睡眠3的简单程序产生-3.000087

答案 1 :(得分:0)

按下停止按钮会发生什么?如果没有任何反应,请检查您的IBOutlets,该操作可能与该方法无关。

答案 2 :(得分:0)

-(IBAction)stopMovie:(id)sender {
    [self endTime:(id)sender]; 
    [self myMovie];
    [self timeInterval:(id)sender];
}

你不应该调用endTime而不是stopTime吗?