问题标签 [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 投票
1 回答
941 浏览

objective-c - 通过在 RunLoop 中添加观察者来监控键盘事件

我的Run Loop Observer是这样写的:

每次我在应用程序中按下任何键时,observerCallback都会被调用 4 次。问题是:如何在observerCallback中获取关键代码?谢谢。

0 投票
1 回答
1175 浏览

macos - 始终检查 Cocoa 中的网络可达性

我想知道是否始终检查应用程序是否已连接到网络的最佳方法是什么?

比如说,安排它每 10 秒检查一次。

任何帮助将非常感激。

0 投票
1 回答
209 浏览

iphone - 有事需要处理时如何从主线程通知后台线程

我正在开发一个进行图像处理并显示结果图像的应用程序。我使用 UIScrollView 让用户滚动所有图像,因为图像不是标准的 jpg 或 png,加载需要时间。所以我想使用线程加载图像,然后更新视图。

现在,我在后台线程中使用一个计时器来检查是否有需要加载的图像。但它运行得不太好。我想知道当有一些图像需要在主线程中加载或任何其他建议时,是否有办法通知后台线程?

提前致谢。

0 投票
4 回答
9716 浏览

ios - 在允许运行循环继续的同时延迟的正确方法

我需要延迟一段时间,但允许同一个运行循环上的其他东西继续运行。我一直在使用以下代码来执行此操作:

这似乎完全符合我的要求,只是有时函数会立即返回而无需等待所需的时间(1 秒)。

任何人都可以让我知道可能导致这种情况的原因吗?在允许运行循环运行时等待的正确方法是什么?

注意:我想以类似于 sleep() 的方式进行延迟,这样在延迟之后我回到与以前相同的执行流中。

0 投票
0 回答
738 浏览

macos - 如何使用 Core Foundation 消息端口在运行循环源之间进行通信

我有以下代码,我尝试在其中创建一个消息端口,用于两个运行循环之间的通信。1个运行循环正在执行而不是pthread,另一个是主运行循环。此功能似乎在许多不同的条件下正常运行,但是,它们都不是所需的条件。

例如,传递 NULL 而不是 kCFRunLoopDefaultMode 可以工作,但不会阻塞。

为sndData和 MessagePortProc 回调(返回 NULL)的返回值传递 kCFRunLoopDefaultMode 和 NULL 数据也按预期工作,唯一的问题是我需要从 MessagePortProc 回调发送和返回数据,因此使用消息端口。

如果使用 kCFRunLoopDefaultMode 并且 MessagePortProc 返回值或 sndData 参数不是 NULL CFMessagePortSendRequest 块并且永远不会返回。MessagePortProc 被调用得很好,它只是永远不会将控制权返回到调用它的位置。没有打印错误消息,没有发生崩溃,它只是坐在那里。

我正在使用从下面概述的小字节数组创建的简单 CFDataRef 用于发送和接收数据作为测试用例。任何一个都会导致概述的行为。

0 投票
1 回答
2223 浏览

ios - 没有运行循环的线程

我正在阅读核心动画编程指南,在“交易”一章中,我看到了这个

重要提示:当从没有运行循环的线程修改层属性时,您必须使用显式事务。

但来自 Apple关于 NSRunLoop 的文档

您的应用程序不能创建或显式管理 NSRunLoop 对象。每个 NSThread 对象,包括应用程序的主线程,都有一个根据需要自动为其创建的 NSRunLoop 对象。

不是说每个线程都有一个runloop吗?或者不是由 NSThread 创建的线程,例如 POSIX 的 pthread

0 投票
0 回答
259 浏览

ios - 如何在主运行循环休眠之前阻塞后台线程?

我希望阻塞一个后台线程,直到我的主线程的运行循环处于睡眠状态(也就是主线程正在等待输入)。

我想我可以这样做:

但是,我确实相信可能有更好的方法来做到这一点。有什么建议吗?

0 投票
1 回答
1363 浏览

ios - 如何在 iOS 中设置动画线程?

我有一个drawView线程安全的函数,可以在短时间内绘制游戏动画。我有函数startAnimatingstopAnimating. 我希望后台线程以drawView固定速率调用,但仅在启用动画期间调用。

startAnimating我打算调用视图performSelectorInBackground:withObject:来让线程运行。

我对如何进行线程通信和初始化绘图线程有点困惑:具体来说,设置一个运行循环来接收显示链接消息,然后在最后通知线程它应该退出并在何时干净地退出运行stopAnimating循环从主线程调用。我想确保它drawView永远不会被调用 after stopAnimating,并且绘图线程不会在绘图操作中间突然取消。我在网上看到了很多对这类问题的非常糟糕的答案。

0 投票
1 回答
892 浏览

ios - autorelease和runloop和线程的关系?

我有一个关于自动释放的问题,现在我有以下代码:

文档在 @autoreleasepool{} 的末尾说,标记为 autorelease 的对象将收到一条释放消息。但是 UIApplicationMain 永远不会返回,这意味着流程永远不会到达 @autoreleasepool 的末尾,那么标记为 autorelease 的对象将永远不会被释放,直到应用程序死亡。没有自动释放的意义......

我问过有人说iOS系统会生成一些线程,(你知道,一个线程,一个runloop)。他说runloop会创建自动释放池。所以自动释放对象将在thead或runloop结束时释放. 但是大多数情况我们使用主线程。所以他说的并不能说服我。

什么是使用自动释放的合适时间。它让我很困惑。

我得到另一点,当一个运行循环结束时自动释放对象将被释放(主运行循环将在应用程序的整个生命周期中存在??)所以我不确定..

任何观点和相关文件将不胜感激!

0 投票
1 回答
270 浏览

iphone - ALAssetsLibrary doesn't return runloop

i wanna show a UICollectionView but i have a problem with loading the images. The AlAssetsLibrary doesn't return to the runloop.

I get the output as

2013-04-12 11:36:25.429 Filmriss[459:907] didReturnWithDefaultRepresentation 2013-04-12 11:36:25.431 Filmriss[459:907] didReturnWithDefaultRepresentation 2013-04-12 11:36:25.435 Filmriss[459:907] didReturnWithDefaultRepresentation 2013-04-12 11:36:25.438 Filmriss[459:907] cellForItemAtIndexPath
2013-04-12 11:36:25.450 Filmriss[459:907] cellForItemAtIndexPath
2013-04-12 11:36:25.456 Filmriss[459:907] cellForItemAtIndexPath

The didReturnWithDefaultRepresentation method is called after every image. in this method try i reload the Collection-view, but it reloads only after all images are found.

Heres my Code: