2010-07-06 33 views
0

我想比較兩個NSDates,一個是通過viewDidLoad方法創建的,另一個是通過單擊按鈕來創建的。我希望能夠點擊按鈕並查找自viewDidLoad運行以來的時差。我一直得到零的差異。有任何想法嗎?NSDate timeInterval = nil

#import "TimeViewController.h" 

id startTime; 

@implementation TimeViewController 
- (void)viewDidLoad { 

    NSDate *startTime = [NSDate date]; 
    NSLog(@"startTime = %@",startTime); 
} 

- (IBAction)buttonPressed{ 

    NSDate *now = [NSDate date]; 
    NSLog(@"now = %@",now); 
    double timeInterval = [now timeIntervalSinceDate:startTime]; 
    NSLog(@"time difference = %@",[NSString stringWithFormat:@"%g",timeInterval]); 

} 

回答

3

你有

id startTime; 
在全球範圍內

,也

NSDate *startTime = [NSDate date]; 

viewDidLoad。第二條語句創建一個名爲startTime的局部變量,它隱藏了全局變量。使用

startTime=[[NSDate date] retain]; 

改爲。

這就是說,我建議你而不是來創建全局變量。相反,使之實例變量和屬性:

@interface TimeViewController :NSObject{ 
     .... 
     NSDate*startDate; 
} 
... 
@end 

和庫比什說,不要忘了

-(void)dealloc{ 
    [startDate release]; 
    [super dealloc]; 
} 

我也建議使用id舉行已知對象。誰告訴你的?這是一個非常糟糕的做法。即使在聲明全局變量時,也應該使用

NSDate*startDate; 

以便編譯器可以針對未定義的方法發出警告。