2013-05-22 3 views
0

Теперь я знаю, что есть вопросы о SO о приостановке NSTimer, но нет в повторяющихся и закрывающих/открывающих окнах. Toggeling pause работает идеально (проверено кнопкой). Окно повторного открытия дает ошибку BAD_ACCESS.Приостановить и возобновить повторяющийся NSTimer при закрытии и открытии окна

- (void)awakeFromNib 
{ 
    self.timer = [[NSTimer scheduledTimerWithTimeInterval:0.85 
               target:self 
              selector:@selector(populateTable:) 
              userInfo:nil 
               repeats:YES] retain]; 
} 

-(IBAction)fireUpTableWindow:(id)sender 
{ 
    [aTableWindow makeKeyAndOrderFront:self]; 
    [self resumeTimer:timer]; 
} 


NSDate *pauseStart, *previousFireDate; 

-(void) pauseTimer:timer 
{ 
    pauseStart = [[NSDate dateWithTimeIntervalSinceNow:0] retain];  
    previousFireDate = [[timer fireDate] retain]; 
    [timer setFireDate:[NSDate distantFuture]]; 
} 

-(void) resumeTimer:timer 
{ 
    float pauseTime = -1*[pauseStart timeIntervalSinceNow]; 
    [timer setFireDate:[previousFireDate initWithTimeInterval:pauseTime sinceDate:previousFireDate]]; 
    [pauseStart release]; 
    [previousFireDate release]; 
} 

- (IBAction)closeTableWindow:(id)sender 
{ 
    [self pauseTimer:timer]; 
    [self->aTableWindow close]; 
    [self release]; 
} 
} 
+0

Вы не должны укладывать удержание на свой таймер .. это только вызовет проблемы –

+0

@ttarules все равно получил ту же ошибку, не сохраняя таймер ... и я попробовал [timer invalidate] в closeTableWindow, t работа печально ... –

+0

@ttarules и я также попытался с удалением всех сохраняющихся (также в resumeTimer и т. д.) –

ответ

0

окно Переоформление дает ошибку BAD_ACCESS.

Проверить в Interface Builder, что окно не установлен Release на Close.