触发函数时创建计时器

发布于 2024-08-05 05:23:38 字数 1257 浏览 3 评论 0原文

我想创建某种计时器,它会在触发不同类型的函数之间花费时间,但到目前为止我还没有这样的运气。我认为我应该使用 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 变量,这似乎解决了我的问题。

I'd like to create some sort of timer that will take the time between firing different kind of functions but I'm having no such luck so far. I assumed I should use the NSDate object and I've done this so far.

I've created several functions

-(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);
}

For instance when I press a playbutton which will play a movie
I will place the starttime function

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

And when I press a stopbutton for the movie the stopfunction will be called as will the timeInterval function

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

[self timeInterval:(id)sender];
}

However it doesn't seem to work. If I press the stopbutton after 3 seconds I would assume my
function timeInterval would give an output of 3 seconds. Unfortunately to no avail.
What's going on, and what I'm doing wrong?

EDIT:

Thanks for the responses.
I made some adjustments in my code snippets.

However I seem to have made a crucial error. I wasn't retaining endtime and starttime variables and this seems to have solved my case.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

檐上三寸雪 2024-08-12 05:23:38

使用示例计时函数和 sleep 3 的简单程序会产生 -3.000087

A simple program using your example timing functions and sleep 3 yields -3.000087

兮颜 2024-08-12 05:23:38

当您按下停止按钮时会发生什么?如果没有任何反应,请检查您的 IBOutlet,该操作可能未连接到该方法。

What happens when you press the stopbutton? If nothing happens, check your IBOutlets, the action is probably not hooked up to the method.

温柔少女心 2024-08-12 05:23:38
-(IBAction)stopMovie:(id)sender {
    [self endTime:(id)sender]; 
    [self myMovie];
    [self timeInterval:(id)sender];
}

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

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

Shouldn't you be calling endTime instead of stopTime?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文