问题标签 [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 回答
1505 浏览

iphone - runloop 的实际工作原理

本月早些时候,我问了这个问题“什么是运行循环?” 在阅读了答案并做了一些尝试后,我让它工作了,但我仍然不完全理解它。如果runloop只是一个与线程相关联的循环并且它不会在幕后产生另一个线程,那么我的线程中的任何其他代码(为简单起见是主线程)如何执行而不会被“阻塞”/不运行因为它在某处造成了无限循环?

那是第一个问题。然后到我的第二个。

如果我在处理完这个问题后得到了一些正确的结果,但没有完全理解它,那么 runloop 是一个循环,您在其中附加“标志”,通知 runloop 当它到达标志所在的位置时,它会“停止”并且执行当时附加的任何处理程序?然后它继续运行到下一个队列。

运行循环

因此,在这种情况下,连接中没有事件被放置在 que 中,但是当涉及到事件时,它会采取与 tap 1 相关的任何操作并在它再次运行到连接之前执行它,依此类推。或者我是尽我所能理解这个概念吗?

0 投票
1 回答
489 浏览

iphone - 第二次尝试如何理解运行循环

可能重复:
runloop 是如何工作的

你好

我之前问过这两个问题,但我还是不明白。

关于 Runloops 1 的
问题 关于 Runloops 2的问题

在我的一本 iPhone 书中,他们提到运行循环是这样的:

“你的应用程序是一个巨大的无限循环,称为运行循环。运行循环的工作是检查输入(触摸、核心位置更新、来自网络接口的数据等)并为该事件找到适当的处理程序(如对象的操作或委托方法)。”</ p>

好的,那么循环到底在哪里?我知道主应用程序线程不需要运行它,并且每个线程都有一个关联的运行循环对象但是它的实际循环部分在哪里?是否是一个围绕主方法不可见的while循环,如果它在循环中的循环不会循环我的所有代码。我知道这是错误的,但它没有完成。

我不了解 runloop 可以运行的不同模式,但也许是因为我不了解 runloop。

提前致谢!

0 投票
2 回答
19963 浏览

ios - 当应用程序后台运行时,NSTimer 是否会触发?

我根本不明白,但NSTimer在我的应用程序中肯定是在后台运行。我有一个NSLog由计时器运行的 in 方法,它在后台运行时正在记录。它在带有 iOS 4.2.1 的 iPhone 4 上。我已经在 Info.plist 中声明了位置背景支持。

我在这里和其他地方阅读了文档和许多讨论,这应该是不可能的。这是一个iOS错误吗?还是未记录的功能?我不想使用它并在不久的将来发现,例如随着 iOS 4.3 的到来,Apple 默默地“修复”了它并且该应用程序将无法运行。

有人知道更多吗?

0 投票
1 回答
147 浏览

macos - osx 和 objc - 为插件运行第二个运行循环?

C程序员在这里。我正在尝试使正在运行的 OSX 应用程序的插件打开它自己的窗口,接受按钮按下,关闭窗口并返回插件 - 不要退出应用程序。

我已经能够使用 NSApp 打开一个窗口,我什至还有一个按钮,但它不会做任何事情。

我是这样设置的。通常,您 [button setTarget: self],但是,这是在普通的 c 函数中,并且没有“self”。我不知道如何从 c 调用 objc 方法,如果这是我需要解决的问题。我只想在按下按钮时调用 fauxAction 方法。

这是插件的窗口——不是主应用程序。我不能让他们穿越电线。[NSApp run] 并将退出菜单放在上面会退出主应用程序,我猜是因为运行循环包装了正在执行的线程。

任何帮助,将不胜感激。我觉得我在这里淹死了。

0 投票
1 回答
118 浏览

macos - 可可 - 执行东西,需要打开窗口,获取输入,然后继续不重新进入运行循环

有没有办法做到这一点?

现在,我接到电话,我正在做事,我必须打开一个窗口来请求输入,然后我必须在我从原始呼叫返回之前完成做事。

如果我进入窗口的运行循环,它永远不会结束或将控制权返回给我。

我在这里想念什么?

0 投票
1 回答
434 浏览

iphone - 使用运行循环堆栈跟踪修复 iPhone 崩溃

我正在使用 hoptoad 来跟踪我的 iPhone 应用程序中的错误。

发生多次(准确地说是 14 次)的一次崩溃具有以下堆栈跟踪:

https://gist.github.com/2ce8a88c07fc134a3d9c

我什至不知道如何开始调查这个。有什么线索吗?崩溃似乎是从主运行循环中出来的——但没有关于导致它的原因的信息。

0 投票
2 回答
2234 浏览

cocoa - NSTimer - 设置普通香草 - 不会触发

在 XCode 3.1.1 中为 OSX 10.5.8 目标、32 位和 i386 构建编译。

我有一个模态运行循环,在 NSWindow wloop 和 NSView vloop 中运行。模态循环首先启动。它按预期启动、运行和停止。这是开始:

然后,当用户按下鼠标左键时,我这样做:

检查调用的返回,我确实得到了一个定时器对象,并且可以确认定时器调用是在我期望的时候进行的。

现在,根据文档,全局存储为“cuckCoo”的生成的 NSTimer 应该自动添加到当前的运行循环中。当前的运行循环绝对是模态的——此时其他窗口被锁定,只有具有预期鼠标操作的窗口正在接收消息。

它调用的方法“onTick”非常简单(因为我无法启动它),位于 vloop NSView 代码中,这就是所有这些发生的地方:

然后,当需要停止模态循环(工作正常,顺便说一句)时,我这样做:

ticking 和 tickCounter 都是全局多头。

我没有从 onTick 中收到 NSLog 消息,并且 tickCounter 在运行循环结束时由 NSLog 报告保持为零。

所有这些都可以编译并运行良好。我只是从来没有得到任何蜱虫。我完全不知所措。任何想法,任何人?

0 投票
2 回答
478 浏览

jquery - jQuery runloop - 如何创建一个循环?

我正在使用 jQuery runloop 来制作相当复杂的动画。尽管名称为 runLOOP,但我无法循环运行动画。

这是我尝试过的(简化):

我希望loop.reset();以一种允许我再次运行循环的方式重置 runloop,loop.play();但我的控制台在第一次完成动画后会发疯。

有没有人尝试过成功?

– 多米尼克

编辑:查看实际代码 -> http://jsfiddle.net/v9UPx/(打开控制台)

0 投票
3 回答
16281 浏览

iphone - iOS runloop 机制有什么指南吗?

我正在学习 iPhone 上的套接字通信,它的指南说了一些关于CFRunloop(它是一个指南CFNetwork,可以在 iOS 上使用吗?)我在哪里可以了解 iOS 上的 runloop?API 参考是不够的。

0 投票
1 回答
1522 浏览

multithreading - CoreFoundation:在后台线程中接收/处理通知

我正在编写一个简单的应用程序,它应该能够使用 Apple 的 CoreFoundation 框架在后台线程中接收和处理通知。这是我要完成的工作:

如果我运行程序,我会得到

问题是后台线程的运行循环立即退出(返回代码 kCFRunLoopRunFinished 而不是 kCFRunLoopRunTimedOut),因为没有源/观察者/计时器。CFNotificationCenterAddObserver 只在主线程的运行循环中注册自己,而不是我的后台线程之一。

我需要一些其他东西的主线程并且不能使用它来运行它的运行循环。有什么办法可以让这个工作吗?也许通过在后台线程的运行循环中注册 CFNotificationCenter ?

提前致谢!