目标C:不断调用函数

时间:2010-12-22 16:06:54

标签: objective-c date time counter

我正试图制作一个非常简单的游戏而且我被卡住了。基本上我想每2秒钟出现一次UIImageView。我的问题是我无法跟踪累积时间。现在我有这个:

NSDate *date = [NSDate date];

NSTimeInterval secondsSinceNow = [date timeIntervalSinceNow];

NSLog(@"date = %@", date);
NSLog(@"secondsSinceNow = %f", secondsSinceNow);

它在我的按钮功能中,因此当用户点击按钮时会调用它。它返回一个始终小于1的十进制数。我已经在viewDidLoad方法中尝试了它以及它自己的方法,但都没有工作。

我认为如果它自己的方法不断检查它会起作用,但我不知道该怎么做。

简而言之,我需要一个每秒更新一次的计时器/计数器。

3 个答案:

答案 0 :(得分:5)

@interface className
{
NSTimer * timer;
}

@property (nonatomic, retain) NSTimer * timer;

@end


@implementation className
@synthesize timer;

...

/ *工厂方法在这里得到了纠正。通过复制和粘贴* /

,可以在没有警告的情况下工作
-(void) applicationDidFinishLaunching : (UIApplication *) application {
timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(targetMethod:) userInfo:nil repeats: YES];

}

//define the target method

/ *方法已更正,因为它需要围绕NSTimer * /

括起来
-(void) targetMethod: (NSTimer *) theTimer {
NSLog(@"Me is here at 1 minute delay");
}
..
@end

取自这里 http://www.iphonedevsdk.com/forum/iphone-sdk-development/14403-nstimer-examples.html

答案 1 :(得分:0)

您只需使用NSTimer以所需的两秒间隔调用班级中的选择器。

也就是说,您可能还会使用CABasicAnimation来淡化UIImageView的不透明度,等待您需要的效果。

答案 2 :(得分:0)

如果前两行紧接着被调用,则它(应该)总是少于一秒。正在那里实例化日期,然后立即调用timeIntervalSinceNow,当它们之间几乎没有时间发生时。目标是在第一次调用时创建日期,然后在其上调用timeIntervalSinceNow以获得超过0的时间。但是,这仍然没有创建任何更新计时器。