if语句中的timeIntervalSinceDate

时间:2011-05-25 12:37:26

标签: iphone objective-c xcode

我的代码因为这个问题而崩溃:

if ([recorder peakPowerForChannel:0]==0 )
{       
    NSLog(@"we are recording now because signal is at high volume... ");
    if(flag==1)
    {
        start = [NSDate date];       
    }
    [recorder stop];            
}
else 
{
    [recorder stop];    
    stop = [NSDate date];
    duration = [start timeIntervalSinceDate:stop];

停止并启动是NSDate并在.m的开头声明 ,问题是因为"持续时间"并且"开始"不是在同一个"如果",并且移动"开始"在"否则"解决这个问题。但我需要它在那里。

为什么会这样?该软件肯定会开始"开始"在她去停止之前,他也忘记了开始吗?

2 个答案:

答案 0 :(得分:2)

[NSDate date]为调用者提供了一个自动释放的对象。 将start = [NSDate date];更改为start = [[NSDate date] retain];,您应该没问题。

然后你必须在最后平衡保留计数。

答案 1 :(得分:0)

在if语句之前移动start的初始化。这样它总是有效的。