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];
}
}
Вы не должны укладывать удержание на свой таймер .. это только вызовет проблемы –
@ttarules все равно получил ту же ошибку, не сохраняя таймер ... и я попробовал [timer invalidate] в closeTableWindow, t работа печально ... –
@ttarules и я также попытался с удалением всех сохраняющихся (также в resumeTimer и т. д.) –