我有一个执行“刷新”每X秒的某个对象。 (以下简称“更新”)我做这种重复性更新的方法是调用performSelector:withObject:afterDelay
和我的选择,我重新安排是必要的。
当然,我有一个方法调用停止这些invokations cancelPreviousPerformRequests
。
问题是,这种“更新”是永远不会被释放。 仅存在一个保留更新程序(AFAIK),并且保持对象正被释放的其他对象,并调用[self setUpdater:nil];
我怀疑这是有事情做与performSelector:withObject:afterDelay
方法,但我无法找到的文档中这个问题的任何引用。
任何人都可以确认或排除呢?
谢谢!
附录这是调度方法:
-(void) scheduleProgressUpdate
{
[self stopProgressUpdates]; // To prevent double scheduling
[self performSelector:@selector(updateProgress)
withObject:nil
afterDelay:1.0];
}
-(void) updateProgress
{
// Perform update..
[self scheduleProgressUpdate];
}
-(void) stopProgressUpdates
{
[NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(updateProgress)
object:nil];
}