2011-08-10 7 views
1

내가 가지고있는 다음과 같은 내 프로젝트 전반에 걸쳐 많은 장소에서 사용하는 하나 개의 방법 :NSDate를 사용하여 시작 지점에서 시간 간격을 측정하려면 어떻게합니까?

-(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

감사 브래드 라슨 – Prasad

답변

3

GCD를 사용하여이를 수행 할 수 있습니다. dispatch_once() 함수는 블록이 앱의 수명 내내 한 번만 실행되도록 정렬 할 수 있습니다.

+0

downvote 놀라운 보인다. –

7

previousTime이라는 속성을 만듭니다.

시간 차이를 찾는 방법을 만듭니다. 정답에 대한

- (NSTimeInterval)timeDifferenceSinceLastOpen { 

    if (!previousTime) self.previousTime = [NSDate date]; 
    NSDate *currentTime = [NSDate date]; 
    NSTimeInterval timeDifference = [currentTime timeIntervalSinceDate:previousTime]; 
    self.previousTime = currentTime; 
    return timeDifference; 
} 
+0

환영합니다! 프라 사드! – EmptyStack

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; 
} 
+0

감사합니다. meccan,이 솔루션을 사용해보십시오. – Prasad

관련 문제