是调用performSelector的对象:withObject:afterDelay是否被NSRunLoop保留?
我有一个特定的对象每X秒执行一次“刷新”。 (“更新程序”)我正在进行这种重复更新的方法是通过调用performSelector:withObject:afterDelay
并在我的选择器中根据需要重新调度。
当然,我有一种方法可以通过调用cancelPreviousPerformRequests
来停止这些调用。
问题是这个“更新程序”永远不会被释放。 只有一个其他对象保留了Updater(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]; }
据我所知,performSelector方法保留其接收器和参数。