问题标签 [runloop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3768 浏览

multithreading - 在 osx 和 ios 的主线程上运行循环

我找不到任何关于做一些真正基本的事情的参考:我想在主 UI 循环上有一个名为“forever”的方法。我会很高兴有一种方法可以调用与 UI 刷新率同步的方法,或者通过自定义时间粒度,因为我真的不需要它比每 50-100 毫秒更频繁地发生。C++ (Carbon) 和 Objective C 的两个答案都很好,尽管我最终会在纯 C++ 应用程序中使用它。如果您还可以建议如何删除此计时器,那就太好了。

请查看评论以进一步解释我想使用它的线程场景。

就像是

0 投票
3 回答
2890 浏览

ios - 是否可以检查主线程是否空闲/排空主运行循环?

我刚刚阅读了以下帖子并尝试实施那里描述的方法:

使用 Kiwi 编写 iOS 验收测试 - 敏捷

那里描述的所有东西都可以正常工作。但!当我运行验收测试时,有一件事会破坏确定性。

这是 Github 上的仓库,该帖子的作者在其中推送了他的实验(可以在页面底部的评论中找到):https ://github.com/moredip/2012-Olympics-iOS--iPad-and -iPhone--source-code/tree/kiwi-acceptance-mk1

考虑一下他用于点击视图的这段代码:

... wheresleepFor以下定义

这是一个幼稚的尝试(“幼稚”不是关于作者,而是关于它是第一个进入脑海的事实)等待一小段时间,直到所有动画都被处理并浸泡所有可能的已(或可能)安排到主运行循环的事件(另请参阅此评论)。

问题是这个幼稚的代码不能以一种确定的方式工作。有一堆 UI 交互会导致在当前编辑的文本字段的键盘消失之前按下 fx 下一个按钮,等等......

如果我只是将时间从 0.1 增加到 fx 1,所有问题都会消失,但这会导致每一个交互,比如“用文本填充文本字段......”或“点击带有标题的按钮......”变成成本一个第二!

所以我的意思不仅仅是在这里增加等待时间,而是一种进行这种人为等待的方法来保证我确实可以继续我的测试用例下一步。

我希望它应该是一种更可靠的方法,可以等待足够多的时间,直到当前动作引起的所有内容(所有过渡/动画或任何主运行循环内容)都完成。

总结这一切都是一个问题:

有没有办法耗尽/排出/浸泡所有调度到主线程及其运行循环的东西,以确保主线程空闲并且它的运行循环是“空的”?

这是我最初的解决方案:

0 投票
2 回答
1551 浏览

iphone - performSelector:onThread 中断运行循环?

我不确定如何使用 API performSelector:onThread,在这里我需要一些建议。
据我所知,我需要一个runloop来调用performSelector:onThread,所以我做了一个。但是后来我发现了一个问题:一旦我打电话performSelector:onThread,就runloop停止了。

这是我的测试代码,runloop 在function kickOffThread.

我打电话kickOffThreadperformInBackground

在 mainThread 我调用以下 API 将 threadCheck 设置为 YES,它被正确调用,但我的线程循环突然停止。

终端日志结果如下,“thread exit ....”没有打印出来。有人告诉我问题出在哪里吗?

0 投票
2 回答
1888 浏览

ios - 线程中的 NSRunloop

我有问题

这是代码

当我打电话时

线程将继续运行,稍后我可以在线程中做一些事情;

但是如果我不调用它,线程将立即退出并且永远不能使用线程做任何事情,为什么?

0 投票
1 回答
646 浏览

ios - 游戏循环更新方法中使用的时间增量或时间戳是多少?

例如在 cocos2D 中:

有人可以解释这些时间增量或时间戳的用途吗?它们与游戏世界的更新方式有什么关系?是因为我们不可靠地了解 fps 并且不应该仅仅依赖基于 -update 调用的增量属性更新吗?

0 投票
0 回答
53 浏览

macos - 你能“跳到运行循环”吗?

我正在使用 xCode 进入我的第一个主要 OSX 应用程序的生产阶段。它是一个访问 eBay 的电子商务应用程序,通过许多按钮启动各种 api 调用,然后解析并显示结果。它变得相当大,正如您可以想象的那样,对于我的第一个 xCode 应用程序,代码结构并不是最佳的。但它现在正在生产中,我不想冒险进行重大重组。

我的问题是:代码中有几个点,许多方法调用很深,我只想跳回运行循环并等待按下按钮。在这一点上,做所有必要的回报是不切实际的。

有没有“转到”运行循环的方法?

谢谢!

0 投票
1 回答
333 浏览

python - 实现运行循环

我正在编写一个 Python 脚本,当我按下我的 MIDI 键盘上的一个键时它会采取行动:

现在,如何让脚本保持活动状态,以便它响应地处理回调,同时不通过旋转轮子来消耗不必要的 CPU?

在我早期的 Visual Studio 日子里,我记得一个 'while(true) { doevents(); }' 类型构造——操作系统在活动进程中循环,为每个进程分配一个特定的时间片,这个命令只是将控制权返回给调度程序。

但我在 OSX 上,我想制作一个独立于平台的 Python 脚本。

我可以吗?

0 投票
0 回答
147 浏览

ios - 调试合并的核心动画

我正在尝试执行一个简单的隐式 UIView 动画,如下所示:

但是,此动画会立即发生,而忽略持续时间参数。我在 -didMoveToWindow 中执行此操作,所以我知道我的视图位于窗口的视图层次结构中。我认为这是由于合并的动画,所以我强制动画在下一个运行循环中发生,如下所示:

这很好用,但真的很难看,我不想到处都这样做。我的视图嵌套在另一个自定义视图层次结构的深处,所以我想弄清楚这个层次结构中的什么导致动画被合并。

我该如何调试?我基本上想知道当前正在执行哪些事务,因此我可以尝试取消嵌套它们,如果这有任何意义的话。或者让我知道我是否找错了树。

0 投票
1 回答
404 浏览

objective-c - Cocoa GUI 类如何在不调用 NSApplication 或 NSRunLoop 的情况下运行

为什么以下代码有效?这是一个使用 NSOpenPanel 选择文件并在 Emacs.app 中打开的小型 Cocoa 程序。它可以从命令行以起始目录作为参数运行。

NSOpenPanel 如何在不调用 NSApplication 或 NSRunLoop 的情况下运行?没有明确启动 NSApplication 或 NSRunLoop 的 Cocoa 程序有什么限制?我原以为其中之一是:你不能使用任何类型的 GUI。也许通过调用 NSOpenPanel,调用了一些调用 NSRunLoop 的后备代码?我在 +[NSApplication alloc] 和 +[NSRunLoop alloc] 上设置了断点,但它们没有被触发。

0 投票
1 回答
530 浏览

ios - 如何将 POSIX 文件描述符添加到 iOS 运行循环以指示何时可以读取数据?

我在 iOS 程序中有一个管道,我希望主运行循环(或任何其他运行循环)让我知道何时有数据要读取......

那么如何将管道的文件描述符添加到运行循环中呢?

(我很确定应用程序必须在后台运行 select/kqueue/poll/whatever 来接收它的事件,所以这应该只是让 FD 进行该调用的问题,但我找不到有关的相关信息正确的 API 调用是什么。)