Iphone 时间间隔问题

Iphone 时间间隔问题,iphone,objective-c,Iphone,Objective C,大家好 我正在编写以下代码,但我的应用程序正在崩溃。我不知道为什么。实际上我想计算速度,但应用程序在第4行崩溃。请解释。调试器说 程序收到信号:“EXC\U坏访问” - (void)viewDidLoad { [super viewDidLoad]; NSDate *date = [NSDate date]; initialDate = date; } -(void) showSpeed { [self.initial

大家好

我正在编写以下代码,但我的应用程序正在崩溃。我不知道为什么。实际上我想计算速度,但应用程序在第4行崩溃。请解释。调试器说

程序收到信号:“EXC\U坏访问”

    - (void)viewDidLoad {
     [super viewDidLoad];



NSDate *date = [NSDate date];
initialDate = date;

              }


  -(void) showSpeed
    {   

[self.initialDate retain];
NSDate *endDate = [NSDate date];

NSTimeInterval  interval = [endDate timeIntervalSinceDate:self.initialDate];

//NSLog(@"time %f",interval);

double speed ;
speed = distance/interval;
NSString *speedValue = [NSString stringWithFormat:@"%1.2f",speed];
     showResult.text = speedValue;

[self.initialDate release];


   }

您可能在存储initialDate时没有保留它

[NSDate]
返回自动删除的对象,您需要保留该对象或使用保留属性

viewDidLoad代码可用后编辑:

您需要保留
[NSDate]
提供给您的对象,因为它是自动删除的

- (void)viewDidLoad {
     [super viewDidLoad];

     initialDate = [[NSDate date] retain];
}
但没有理由在showSpeed中保留/释放它


我对苹果的《内存管理指南》的推荐再多也不够——它确实很重要,值得一读不止一次。:-)

什么是initialDate及其初始化位置?initialDate是一个NSDate insatnce变量,我已经在viewDidLoad中初始化了它……NSDate*date=[NSDate date];initialDate=日期;我使用[self.initialDate retain]保留了它;但它仍然是崩溃的,当你设置它时,你需要保留它,没有看到这个代码,这只是猜测。因此,如果没有查看viewDidLoad方法和full showSpeed方法,就很难找出问题所在。如果您发布崩溃时收到的任何消息(调试模式提供更多信息),这将非常有用。嘿,Eiko问题解决了…您是对的,我保留了设置日期,现在我的代码工作正常…非常感谢!