2011-08-10 6 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()関数は、ブロックがアプリケーションの存続期間中に1回だけ実行されるようにアレンジすることができます。

+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

関連する問題