问题标签 [nsrunloop]

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 回答
1352 浏览

cocoa - 在循环中刷新 NSOpenGLView 而不会放弃 Cocoa 中的主运行循环

我正在构建一个 Cocoa/OpenGL 应用程序,每次大约 2 秒,我需要控制每个视频帧以及写入数字 IO 设备。如果在我进行 openGL 调用之后我放开主线程(例如,如果我在间隔为 0.01 秒的计时器触发方法中进行 openGL 调用)openGLview 每次调用都会刷新glFinish()
但是,如果我改为让主线程像在 2 秒长的 while 循环中那样忙碌,openGl 调用将不起作用(令人惊讶的是,第一次调用glFinish()会起作用,但其余调用不会起作用)。文件说glFinish应该阻塞线程,直到执行 gl 命令。任何人都可以帮助我了解这里发生了什么或提供解决此问题的方法。为了清楚起见,我想一个接一个地呈现 200 帧,而不会丢失一帧,并通过写入数字 IO 端口(我对此没有问题)标记每一帧刷新,所有这些都在 Snow Leopard 上。

0 投票
1 回答
12190 浏览

cocoa - 从计时器停止 NSRunLoop

我制作了一个带有计时器的 RunLoop,它可以更新显示倒计时的标签。一旦倒计时达到零,我需要 RunLoop 停止,对于计时器正常结束的情况,我可以使用 runUntilDate,日期是当前日期 + 倒计时时间。问题是当用户在完成之前取消按钮的倒计时。我不知道如何告诉 RunLoop 停止取消按钮操作。这是 RunLoop 的代码:

该方法只是告诉标签在每个循环中减少 1。

我可以告诉取消按钮将标签更改为零,并让运行循环选择器检查值是否为零,但运行循环自己的选择器可以告诉它停止吗?

这些是我发现的最接近的,但它们似乎不能从 RunLoops 自己的选择器内部工作,或者至少我没有以任何方式尝试过它们。

基本上我需要让按钮告诉 RunLoop 停止,或者以某种方式从它自己的选择器中停止 RunLoop。

谢谢。

0 投票
2 回答
1440 浏览

cocoa-touch - 使用 NSNetService 同步 Bonjour 解析(为什么从运行循环返回控制需要这么长时间?)

我正在尝试同步对服务名称进行 Bonjour 解析,因此我试图弄清楚如何正确等待 NSNetService 的 netServiceDidResolveAddress() 调用。

我的代码如下所示:

这是我处理解析成功的函数:

只要我的代码在 resolve 事件出现后继续运行一秒钟左右,我就会很高兴。

实际发生的事情是解析发生得很快,我看到 netServiceDidResolveAddress() 中的代码完成了,但是在控制从 runUntilDate 返回之前一直有一个不受欢迎的 5-6 秒等待,我看到“...(运行后循环)调试语句。

我环顾了几个留言板,看到了类似的问题,但他们的解决方案(如使用 CFRunLoopStop)似乎没有任何效果。

这是我收到的日志记录示例:

如果有人可以告诉我使用 NSNetService 解析来获得同步结果的不同方法,或者重构我的 runloop 相关代码以避免这种(似乎是操作系统创建的)5-6 秒延迟,我将不胜感激。

0 投票
1 回答
252 浏览

objective-c - 不同类中的多个 NSURLConnections 并行运行

目前,我的 iPad 应用程序中有 UITableView 和简单的 UIView。他们每个人都需要同时从远程 Web 服务获取数据。在每个 ViewController 中,我创建 NSURLConnection 并运行对 Web 服务的请求,但似乎第二个从来没有返回任何内容。

是否可以并行运行两个单独的请求?

到目前为止,我发现的是一个使用建议,[[NSRunLoop currentRunLoop] run];尽管我不确定如何在这种情况下使用它:/

提前致谢!

0 投票
3 回答
624 浏览

cocoa - 同步调用 NSWindow makeKeyAndOrderFront

我正在为 Mac OS 编写一个小型 Cocoa 应用程序,我的目标是显示一个窗口,然后读取屏幕上的像素。我已经知道如何做后面的部分,但是在继续之前无法显示窗口。从我所见,像由 NSWindow 的 makeKeyAndOrderFront 触发的窗口更新被推迟了。

我对 Cocoa 还比较陌生,但我基本上想做这样的事情:

那么如何使阻塞操作发生呢?

0 投票
1 回答
29753 浏览

iphone - NSDefaultRunLoopMode 与 NSRunLoopCommonModes

每当我试图下载一个大文件或其他东西时UIScrollViewMPMapView只要我触摸 iPhone 屏幕,下载过程就会停止。值得庆幸的是, Jörn的一篇很棒的博客文章提出了另一种选择,NSRunLoopCommonModes用于连接。

这让我了解了 NSDefaultRunLoopMode 和 NSRunLoopCommonModes 这两种模式的细节,但苹果文档并没有很好地解释,只是说

NSDefaultRunLoopMode

处理 NSConnection 对象以外的输入源的模式。这是最常用的运行循环模式。

NSRunLoopCommonModes

使用该值作为模式添加到运行循环的对象被所有已声明为“通用”模式组成员的运行循环模式监视;有关详细信息,请参阅 CFRunLoopAddCommonMode 的描述。

CFRunLoopAddCommonMode

源、计时器和观察者注册到一种或多种运行循环模式,并且仅在运行循环以其中一种模式运行时运行。通用模式是一组运行循环模式,您可以为其定义一组由这些模式共享的源、计时器和观察者。例如,无需将源注册到每个特定的运行循环模式,您可以将它注册一次到运行循环的通用伪模式,它将在通用模式集中的每个运行循环模式中自动注册。同样,当一个模式被添加到公共模式集合时,任何已经注册到公共伪模式的源、计时器或观察者都被添加到新添加的公共模式中。

谁能用人类语言解释这两者?

0 投票
1 回答
158 浏览

loops - 存在“模态循环代码”时的表格视图滚动问题

我有一个 UITableView 滚动的问题。在视图控制器中,我添加了我的 tableview 并使用 presentModalViewController 显示它。用户必须在表格视图中选择一个项目才能继续,因此代码必须阻止等待选择。我用过这样的循环:

它工作正常,但表格视图不能正确滚动。当你拖动它时,一切正常。当您松开手指时,表格不会重绘。我要为此疯狂!!!

请帮忙。

0 投票
1 回答
70 浏览

objective-c - 在@implementation 部分循环代码

我已经编写了程序,它从数组中选择一个随机元素。

按下“开始”按钮后,如何循环该代码?

我想,一旦按下“开始”按钮,就会每 5 秒从数组中选择一个新元素并将其写入文本字段......感谢您的回答。

0 投票
2 回答
3158 浏览

iphone - 如何在 NSRunLoop 中正确地使我的计时器无效

我从应用程序中的服务器获取具有 secondsToEnd 值的信息,并在收到此信息后启动计数器。

我的项目包含一个滚动视图,因此为了避免由于滚动而锁定我的计时器,我通过以下方式将计时器添加到 NSRunLoop:

我创建了一个名为的 NSTimer 属性,它是多么原始,计时器,这是我的 startTimer 函数的整个片段:

在 start 方法中检查无效的原因是因为 secondsToEnd 值达到 0 后,我收到一个新的,我再次调用 startTimer。

在我的 dealloc 方法中,我有这个:

但它不会失效吗?我究竟做错了什么?

0 投票
4 回答
5529 浏览

objective-c - iOS5 在 runMode:beforeDate 期间崩溃:

我的应用程序与 iOS5 b7 和 GM 版本的兼容性存在问题。

问题出现在下一行代码中:

EXC_BAD_ACCESS一些迭代后,应用程序因信号而崩溃。

通过的迭代次数是随机的(从 2 到 7)。

在 iOS4 和 iOS3 上也一切正常。

同样的问题也出现在 Apple 的示例中:XMLPerformance Sample

你怎么看待这件事?

10 月 12 日我的应用程序的数千名用户将升级到 iOS5,我不希望我的应用程序在 AppStore 中出现如此奇怪的错误。