我在项目的许多地方使用了一种方法,如下所示:
-(void)showSignInView
{
if(check for time interval)
[[self superview] addSubview:loginController.view];
}
我想首次注意调用此方法,然后在此方法的每次后续调用中检查以确保间隔距离原始调用超过15分钟。只有这样它才会执行其余的代码。
我知道你可以使用NSDate来测量时间间隔,使用如下代码:
NSDate *firstTime = [[NSDate date] retain];
NSDate *SecondTime = [NSDate date];
NSLog(@"Time elapsed: %f", [SecondTime timeIntervalSinceDate:firstTime]);
但我不确定如何实施初始时间检查,然后进行后续比较。我怎么能这样做?
答案 0 :(得分:7)
创建名为previousTime
。
@property(nonatomic, retain) NSDate *previousTime;
并创建一种方法来查找时差。
- (NSTimeInterval)timeDifferenceSinceLastOpen {
if (!previousTime) self.previousTime = [NSDate date];
NSDate *currentTime = [NSDate date];
NSTimeInterval timeDifference = [currentTime timeIntervalSinceDate:previousTime];
self.previousTime = currentTime;
return timeDifference;
}
答案 1 :(得分:3)
您可以使用GCD来实现这一目标。 dispatch_once()
函数可以安排块只在应用程序的生命周期内执行一次。
答案 2 :(得分:2)
NSDate *firstTime = nil;
- (void)loadView {
[self calculateTime:[NSDate dateWithTimeIntervalSince1970:1312996898]];
}
- (void)calculateTime:(NSDate*)secondTime
{
double offset = [secondTime timeIntervalSinceDate:[self getFirstTime]];
if (offset >= 900.0) {
NSLog(@"15 min gone");
}
}
- (NSDate *)getFirstTime
{
if (!firstTime) {
firstTime = [[NSDate date] retain];
}
return firstTime;
}