如何编写Objective C中的重复任务? (例如每15分钟增加一次生命)

时间:2013-04-22 08:28:56

标签: iphone objective-c xcode ios4

我想知道在iPhone应用程序中增加资源的最佳做法是什么(无论它是在前台运行还是在后台冻结/运行)我想要完成的壮举基本上是每15个增加一些硬币。分钟,无论应用程序是在前台还是后台。

4 个答案:

答案 0 :(得分:4)

当您的应用程序运行时,您可以使用NSTimer来实现此目的。但是,当你的应用程序在后台时,计时器将不会触发。

使用AppDelegate的applicationDidEnterBackgroundapplicationWillEnterForeground方法检测应用进入/退出背景状态的时间 - 根据当前时间增加硬币数量。

答案 1 :(得分:1)

您可以通过查找第一次和最后一次启动之间的时差(根据您的要求)然后根据时差递增硬币来实现此目的 找到两个日期之间的时间间隔

 NSTimeInterval noOfSeconds = [date timeIntervalSinceDate:date2];

//找到两个日期之间的差异

noOfSeconds/900//this will give the number of 15 minutes elapsed

答案 2 :(得分:1)

这取决于您要做的事情,但可能您不需要在后台执行此操作。只需存储时间戳,用户最后一次检查硬币数量,并通过一些数学计算,在下次检查时计算当前硬币。

答案 3 :(得分:1)

你可以这样做:

NSTimer *timer;
timer= [NSTimer timerWithTimeInterval:15*60 //seconds
                                    target:self
                                    selector:@selector(yourMethod)
                                    userInfo:nil
                                    repeats:YES];

这是每15分钟调用yourMethod,你可以在那里做你的东西。

除此之外,请参阅:

iphone - NSTimers in background