我试图比较两个NSDate,一个是由viewDidLoad方法创建的,另一个是通过单击按钮来创建的。我希望能够单击按钮并找到自viewDidLoad运行以来的时差。我不断得到零差异。有任何想法吗?
#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]);
}
答案 0 :(得分:3)
你有
id startTime;
在全球范围内,也是
NSDate *startTime = [NSDate date];
在viewDidLoad
内。第二个语句创建一个名为startTime
的局部变量,它隐藏全局变量。使用
startTime=[[NSDate date] retain];
代替。
那就是说,我建议你不来创建全局变量。相反,将它设为实例变量和属性:
@interface TimeViewController :NSObject{
....
NSDate*startDate;
}
...
@end
正如Kubi所说,别忘了
-(void)dealloc{
[startDate release];
[super dealloc];
}
我还建议不使用id
来保存已知对象。谁告诉你的?这是一个非常糟糕的做法。即使声明全局变量,也应该使用
NSDate*startDate;
以便编译器可以针对未定义的方法发出警告。