performSelector:onThread make runloop exited



在此处输入图像描述 performanceSelector:onThread 使运行循环退出? 我尝试观察运行循环,当我触摸时,运行循环在完成句柄执行选择器:onThread后退出,计时器停止工作。我听不懂

来自-runMode:beforeDate:的文档:

运行循环一次[...]

(着重号后加(

也就是说,此方法不会"循环"运行循环。它只是阻塞一次等待一个输入源触发。当此类输入源触发时,该方法将返回。

返回值

是,如果运行循环运行并处理了输入源,或者如果 已达到指定的超时值 [...]

同样,该方法在"运行循环运行并处理输入源或达到指定的超时值"(强调添加(时返回。

[此方法] 在处理第一个输入源或达到 limitDate 后返回。

-performSelector:onThread:...是作为运行循环源实现的,但这是一个实现细节。通常,除非在自定义模式下运行运行循环,否则不能仅依赖于在运行循环中计划的应用输入源。框架可以在上面安排自己的源代码。因此,您必须为该方法的返回做好准备。

因此,您要么必须循环调用以-runMode:beforeDate:,直到出现适合您的目的的条件,要么需要对计时器和运行运行循环使用自定义模式。但是,在后一种情况下,您需要为该模式安排自己的输入源,因为仅计时器不足以使运行循环保持运行。

相关内容

最新更新