我有一个对象每隔X秒执行一次“刷新”。 (“更新者”)
我正在进行这种重复更新的方法是调用performSelector:withObject:afterDelay
并在我的选择器中根据需要重新安排。
当然,我有一种方法可以通过调用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];
}
答案 0 :(得分:2)
据我所知,performSelector方法保留了它的接收者和参数。