gpt4 book ai didi

objective-c - 使用 [[NSRunLoop currentRunLoop] runUntilDate :[NSDate date]] to let the scheduled selectors fire

转载 作者:行者123 更新时间:2023-12-03 17:05:16 25 4
gpt4 key购买 nike

在我的应用程序中,有时我使用 performSelector 安排了一堆消息。

在某些情况下,在处理 UI 操作时,我需要等待所有当前计划的选择器触发。

我可以将我的代码放在另一个方法中,并使用 performSelector:target:argument:order:modes: 安排它,并且 order 值足够高以确保它会触发最后,但我有理由认为这将是一个丑陋的解决方案。

所以我发送[[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]],它似乎就像我需要的那样工作。

不过,我不确定这是否是让运行循环滚动一次迭代的合法方法。另外,这种方法是否存在任何潜在的问题?

最佳答案

好吧,回答我自己的问题。

首先,它是 duplicate (另外,this)。

接下来,通常,从同一个运行循环内发送 [[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]] 是一个坏主意:

  1. 理论上,自动释放池会以这种方式耗尽。实际上,我无法通过使用 runUntilDate 之前分配的对象(在 ARC 下)使我的应用程序崩溃,但最好还是不要冒险。

  2. 如果在 runUntilDate 期间另一个操作以某种方式出列,可能会导致一些意外的副作用。

TL;DR 我应该帮自己一个忙,用更具确定性的代码替换该代码。

关于objective-c - 使用 [[NSRunLoop currentRunLoop] runUntilDate :[NSDate date]] to let the scheduled selectors fire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10371971/

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