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

objective-c - 为什么我的应用程序在单元测试过程中终止?

问题

我运行我的单元测试。在某一时刻,我等待使用:

NSOperationQueue 为空。当我的应用程序到达这条线时,它会立即终止。它与其他测试运行完全相同的行。最近所有测试都运行良好。它有时也会在启动时立即终止我的应用程序。

到底是怎么回事?

0 投票
1 回答
1496 浏览

iphone - 循环一个 CFRunLoopSource

这是我目前正在开发的源文件。这个类背后的想法是包含一个目标对象和选择器,它将在传递给 scheduleInCFRunLoop的任何CFRunLoop中调用。我需要这个重复循环而不消耗 iPhone 上的所有可用处理时间。任何关于完成的帮助都是最有帮助的,我花了一整天的时间在网上冲浪,试图找到有关自定义 CFRunLoop 源的有用信息,但我还没有找到任何对完成这门课程有用的东西。

RunLoopContext.h

RunLoopContext.m

0 投票
3 回答
791 浏览

iphone - 可可中的 NSRunLoops?

假设我有 2 个线程,一个是主线程,另一个是辅助线程。主线程使用最多,但有时(很少)我希望辅助线程根据来自主线程的调用做一些工作。大多数时候辅助线程应该休眠。现在经过一番搜索,我明白做到这一点的方法是使用 runLoops。所以我尝试阅读苹果的文档(http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html#//apple_ref/doc/uid/10000057i-CH16-SW5 )

但在我看来它非常复杂,我在那里度过了一段艰难的时光。有没有一种优雅而简单的方法来实现我所描述的?我可以运行和玩任何类似的 runLoop 代码示例吗?

谢谢

0 投票
2 回答
1412 浏览

ios - NSRunLoop cancelPerformSelectorsWithTarget 不起作用

我有以下代码,但没有得到预期的结果。

我预计该函数会被调用大约 0 次,如果 CPU 运行缓慢,可能会调用 1 次。

该函数将执行10次!:( 总是。我做错了什么,我怎么能达到我预期的结果?

非常感谢,尼克

0 投票
1 回答
310 浏览

objective-c - StatusItem 菜单在打开时会阻塞主线程。解决方法?

我为 Mac 编写了一个应用程序,它被设计为状态栏项目。但是,当用户从状态栏打开菜单时,主运行循环会被阻塞,直到它关闭。由于此应用程序响应套接字上的消息,因此在菜单打开时它无法执行任何操作是一个问题。

我尝试从单独的线程设置状态项并将套接字安排在不同的线程上,但没有骰子。有什么好的方法可以解决这个问题吗?

更新:

我现在已经解决了这个问题。我使用的是NetSocket套接字包装器,它的异步特性使得在不同的线程上打开和观察变得非常困难。我切换到SmallSockets(另一个 Objective-C 套接字包装器),因为它是同步的,所以我能够打开一个套接字并直接在单独的线程上观察它。

0 投票
3 回答
4940 浏览

iphone - 如何将选择器或块发送到 NSRunLoop 执行?

我需要保证同一个线程在任意时间执行各种操作。首先线程需要初始化一个库,然后我希望线程休眠直到需要完成工作并且在用户输入时,我需要能够传递选择器或块以执行。

如何在初始化后将 NSRunLoop 设置为休眠?之后,我如何向运行循环发出信号以唤醒并做某事?

我已经尝试阅读 iOS 的线程编程指南,但我想避免将类设置为自定义输入类并使用更轻量级的东西,例如performSelector:onThread:

我可以设置一个从现在开始永远触发的计时器,这样运行循环就不会结束吗?

这基本上是我想要的伪代码:

我将工作作为performSelector:onThread:消息发送到哪里。如果我可以向运行循环发送这样的块会更好:^{[someObj message]; [otherObj otherMsg];}但我会很高兴,performSelector因为我很确定无需太多额外的编码就可以实现。

谢谢!

0 投票
2 回答
928 浏览

cocoa-touch - Runloop 在模拟器上工作在设备上失败

我有第二代 iPod Touch,我正在尝试使用照片名称从资产库中检索照片。我在设备上运行恢复以确保它是出厂 4.1。

我的头文件有:

我的代码是:

...

photoFromURL 在哪里

这在模拟器上运行良好,但运行循环永远不会在设备上返回。我通过前三个 NSLog 语句进行获取,但第四个从未出现。

请帮忙。- 丹

0 投票
1 回答
1949 浏览

objective-c - NSThread detachNewThreadSelector???? 呃?

我正在查看线程编程,我不得不说它非常好。特别是我正在寻找如何为运行循环配置基于端口的输入源。我看到了这段代码

在那之前我已经明白了一切。该函数在做什么?,什么是“LaunchThreadWithPort”,“MyWorkerClass”代表什么?。

我对@selectors 缺乏一点了解,但这不是我的主要问题。我真的不了解该功能以及那里正在做什么。

感谢任何回复的人。

0 投票
1 回答
1526 浏览

iphone - 拖动 UITableView 时 performSelector 无法运行?

我有一个UITableViewController默认的UITableView. 我开始用手指慢慢拖动表格进行滚动,即不用手指轻弹它。每次表格在屏幕上移动时,scrollViewDidScroll都会调用控制器的方法;当满足我指定的某些条件时,其中一个调用用于scrollViewDidScrollperformSelector:withObject:afterDelay以后安排某些操作。

但是,我发现在我松开手指之前该动作不会执行。例如,如果我将afterDelay参数设置为 2 秒,但按住手指 5 秒,当我松开手指并执行操作时,为时已晚 3 秒。有没有办法让动作(即更新 UI,因此必须在主线程中运行)在手指仍然靠在屏幕上时执行?

谢谢!

0 投票
1 回答
927 浏览

iphone - 次要线程关于

我的应用程序中有一个主线程和一个辅助线程。众所周知,UI 正在使用主线程。我使用辅助线程来后台加载我的视图。我有一个主控制器,我称之为虚拟控制器。从那里我打电话给我的主控制器,它处于横向模式。

所以基本上我要做的是,当我旋转我的虚拟控制器时,我希望能够加载我的主景观控制器,反之亦然。

当我从虚拟旋转到主要时,一切正常。主控制器有一系列要加载的子控制器,所以我将该进程放在辅助线程上,到那时它们正在加载,我会显示一个加载器屏幕。

dummy 是一个普通的视图控制器,而 main 是一个模态视图控制器。

现在的问题。

如果用户试图旋转表单 dummy --> main,rotate 方法会启动主视图控制器的初始化。但是由于某种原因,用户改变了主意并从 main-->dummy 旋转回来,理想情况下,过渡应该是平滑的,因为 UI 线程(main theread)是免费的。会发生什么是 UI 旋转回来。但是由于主控制器上的辅助线程仍然处于开启状态,即使在主线程在 MainController 上调用了dismiss modal控制器之后,当我们调用 willRotate 函数时。

我在各种帖子中读到我们不能简单地杀死辅助线程,因为我们必须自己清理东西。那么任何人都可以指导我完成代码,我如何杀死我的辅助线程并在我转回我的调用表单之前进行清理..??它有点紧急......请不要指向其他线程主题,因为我已经访问过那些。

我特别想知道我应该如何停止我的辅助线程,而不会导致崩溃。谢谢。