gpt4 book ai didi

objective-c - 是调用 performSelector 的对象 :withObject:afterDelay get retained by the NSRunLoop?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:41 28 4
gpt4 key购买 nike

我有一个特定对象每 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];
}

最佳答案

据我所知,performSelector 方法保留其接收者和参数。

关于objective-c - 是调用 performSelector 的对象 :withObject:afterDelay get retained by the NSRunLoop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10928118/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com