NSTimer является действующим производителем sigabrt - PullRequest
0 голосов
/ 09 декабря 2011
if([timer isValid])  // << breakpoint here
{
    NSLog(@"Timer Valid");
}
timer = [NSTimer scheduledTimerWithTimeInterval:[timeinterval intValue] target:self selector:@selector(PlayDelaySound) userInfo:nil  repeats:NO];

Функция запускается правильно в первый раз, когда timer не запланировано. Тем не менее, для последующих вызовов во время отладки консоль выдает журнал (приведенный ниже), который регистрирует один шаг. и впоследствии выдает сигабрт.

Любая помощь? Спасибо

Вход

Single stepping until exit from function objc_msgSend, 
which has no line number information.
warning: Remote failure reply: E37
Single stepping until exit from function objc_msgSend, 
which has no line number information.
warning: Remote failure reply: E37

1 Ответ

4 голосов
/ 09 декабря 2011

Может быть, вам не хватает retain?

Примерно так:

timer = [[NSTimer scheduledTimerWithTimeInterval:[timeinterval intValue] target:self selector:@selector(PlayDelaySound) userInfo:nil  repeats:NO]
         retain];

Обновление: потому что, если вы не сохраняете, экземпляр таймера может быть когда-нибудь освобожден, иВаш звонок на isValid вызывает сбой.

...