我的代码因为这个问题而崩溃:
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的开头声明 ,问题是因为"持续时间"并且"开始"不是在同一个"如果",并且移动"开始"在"否则"解决这个问题。但我需要它在那里。
为什么会这样?该软件肯定会开始"开始"在她去停止之前,他也忘记了开始吗?
答案 0 :(得分:2)
[NSDate date]
为调用者提供了一个自动释放的对象。
将start = [NSDate date];
更改为start = [[NSDate date] retain];
,您应该没问题。
然后你必须在最后平衡保留计数。
答案 1 :(得分:0)
在if语句之前移动start的初始化。这样它总是有效的。