timeIntervalSinceDate внутри оператора if - PullRequest
0 голосов
/ 25 мая 2011

мой код падает из-за этой проблемы:

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];

stop и start - NSDate и объявлены в начале .m Проблема в том, что, поскольку «duration» и «start» не находятся в одном и том же «if», а перемещение «start» в «else» решает это. но мне нужно, чтобы он был там.

почему это случилось? программное обеспечение наверняка «запустится» до того, как она остановится, так что он забыл о запуске?

Ответы [ 2 ]

2 голосов
/ 25 мая 2011

[NSDate date] отдает объект авто-освобождения вызывающей стороне. Измените start = [NSDate date]; на start = [[NSDate date] retain];, и все будет в порядке.

Затем вы должны уравновесить счет удержания в конце.

0 голосов
/ 25 мая 2011

Переместить инициализацию запуска перед оператором if.Таким образом, он всегда будет действительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...