问题标签 [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.
objective-c - HTTP 服务器在 Cocoa 应用程序中工作,但在测试用例中不工作——运行循环问题?
我正在尝试向这个SimpleHTTPServer 示例添加一个 GHUnit 测试用例。该示例包括一个对我来说很好的 Cocoa 应用程序。但我无法在测试用例中复制该行为。
这是测试类:
我尝试通过 NSURLRequest 以及(在 期间sleep
)通过网络浏览器发送请求。委托方法-processURL
和-stopProcessing
永远不会被调用。问题似乎是[fileHandle acceptConnectionInBackgroundAndNotify]
SimpleHTTPServer-initWithTCPPort:delegate:
没有导致任何 NSFileHandleConnectionAcceptedNotifications 到达 NSNotificationCenter - 所以我怀疑涉及运行循环的问题。
问题似乎出在 NSFileHandle 上,而不是 NSNotificationCenter 上,因为当[nc postNotificationName:NSFileHandleConnectionAcceptedNotification object:nil]
添加到 的末尾时initWithTCPPort:delegate:
,NSNotificationCenter 确实会收到通知。
objective-c - 在 iOS 上使用多个 NSTimer - 只有一个计时器触发
需要帮助解决问题。
目标
我正在组装一个 iOS 图书应用程序,它使用 NSTimers 在加载视图后触发几个交错的动画事件。我创建了一个MethodCallerWithTimer类来帮助我做到这一点(底部的代码)。
到目前为止我的解决方案
当我使用MethodCallerWithTimer类时,我将 objectOwningMethod 分配为我的 UIViewController 子类对象(它是一个书页),然后将该方法作为该类中的实例方法。这是我指定的方法的示例 - 非常简单地打开屏幕上的一些艺术品:
我的问题
当我创建多个MethodCallerWithTimer实例然后加载视图并启动它们时,我只会让第一个事件发生。其他计时器都没有调用它们的目标方法。我怀疑我不明白我要求 NSRunLoop 做什么或类似的事情。
有什么想法吗?
这是我的MethodCallerWithTimer类:
和实施:
concurrency - 异步 NSURLConnection,并发 NSOperation,什么时候使用 NSRunLoop?
我正在尝试在辅助线程中运行 NSURLConnection 异步(目标是 iOS4),为此我创建了一个并发 NSOperation,我想我快到了,但不清楚以下内容:
1) 在 iOS4 NSOperationQueue addOperation 在新线程中开始操作,因为使用 GCD,基于Technical Q&A QA1712但是,我的测试(模拟器和 iPad)显示 start() 总是在主线程上调用,任何想法,我需要在这里检查一下:如果在主线程上然后产生一个新线程?
2) 如果 start 实际上是通过 addOperation() 在辅助线程上调用的,那么我可以通过在当前 NSRunLoop 上调度来启动我的异步 NSURLConnection:
就像这里的 LinkedImageFetcher 示例一样,在完成之前我不需要循环:
3) 假设在主线程上调用了我的自定义 NSOperation start() 并且 2) 是正确的,并且我在 start() 中生成了一个新线程来调用我的自定义 main() 方法:
在我的 main() 中,我确实需要运行当前线程运行循环:
这是我设法在并发 NSOperation 中运行 NSURLConnection 的唯一实例,但我不确定我是否需要运行 RunLoop,如果 GCD 作为技术说明状态提供线程,我可以按照逻辑在 2) 中还是我仍然需要运行线程的 runloop?如何测试 GCD 提供的线程?
非常感谢您的任何说明
iphone - 从命令行程序从 iPhone 获取加速度计数据?
请查看以下要点:
https://gist.github.com/969112
本质上,我正在尝试设置一个UIAccelerometerDelegate
并让它从命令行 iPhone 应用程序接收数据(即它已越狱,我通过 ssh 连接到手机并在 iPhone 本身上编译上述代码)。
上面的代码不起作用......即使应用程序位于它的运行循环中,并且UIAccelerometer
它的委托处于活动状态,也没有调用任何回调......
我有点不知道还需要什么。我只是想获得获取加速度计数据的最简单的“hello world”示例(不涉及 UI 的所有膨胀并运行完整的应用程序)......
那么有什么想法吗?提前致谢!
iphone - 在这种情况下,我是否需要将运行循环与我的 NSTimer 一起使用?
我不想 sleep() 我的应用程序,但我确实希望它等待我的计时器完成它的操作(基本上更新 4 个 UILabel,每秒一个)。
在计时器完成后,我想在主循环中回火一些代码 - 我希望它等到计时器完成。目前,主循环启动计时器,然后直接进入下一个代码块(而计时器在后台滴答作响)。但实际上,我希望计时器完成对 4 个 UILabel 的更新,然后我希望主程序触发下一个代码块。
我在谷歌上搜索并在 YouTube 上观看了几个糟糕的教程,但我认为我应该使用运行循环。这是正确的吗?
iphone - NSTimer 在单独线程上的不当行为
我正在尝试将 NSTimer 安排在一个单独的线程上,这就是我的做法。
timerFireMethod 旋转我的微调器,当按下按钮(停止按钮)时,我使计时器无效并退出此方法中的线程。如果按下旋转按钮,我会在这里进行轮询。
问题是,我的 timerFireMethod 第一次被正确调用。Spinner 第一次旋转。但是当我停止我的微调器并重新启动它时,微调器不旋转。日志说第二次我的“startSpinner”方法被调用但“timerFireMethod”方法没有被调用。
更糟糕的是,微调器在模拟器上工作 5-6 次,在 2g 设备上工作 1 次,在最新的 ipod 上工作 4-5 次。它的随机。
这基本上是如何工作的?可能是什么问题呢?
iphone - AVPlayerStatus 与 AVPlayerItemStatus
问题是player.statusAVPlayerStatusReadyToPlay
在 player.currentItem.status 返回前整整 2 秒返回AVPlayerItemStatusReadyToPlay
。有没有人对为什么会发生这种情况有任何有用的解释?
这只是示例代码,用于显示正在发生的事情的基本概念,因此如果有任何拼写错误或其他任何错误,请忽略它们。
objective-c - 保持 NSThread 存活并在其上运行 NSRunLoop
所以我正在启动一个新的 NSThread,我希望以后可以通过调用performSelector:onThread:...
. 根据我对调用该方法的理解,该方法将该调用添加到该线程上的 runloop,因此在其下一次迭代中,它将弹出所有这些调用并随后调用它们,直到没有任何东西可以调用。所以我需要这种功能,一个准备好工作的空闲线程,我可以调用它。我当前的代码如下所示:
但是线程没有保持活动状态,并且 performSelector:onThread 不做任何事情。我该如何以正确的方式解决这个问题?
iphone - NSTimer 失效后后台线程 NSRunloop 运行不退出!为什么?
我正在创建一个 NSTimer 并将其添加到后台线程的运行循环中。我的代码就像这个答案的后台线程示例:iPhone-SDK:Call a function in the background?
在创建计时器并将其从 gdb I 附加到运行循环后po runLoop
,它会输出以下内容:
这表明 1 个计时器已附加到 runloop 之后,在我使计时器无效之后, NSRunloop 运行方法不会退出,但是在我暂停调试器并从 gdb 中我po runLoop
再次看起来像这样:
现在“计时器”条目有 0 个对象。但线程继续运行。我经常离开屏幕然后回来,所以这会导致后台线程的建立,在使用太多资源后最终会杀死应用程序。定时器在失效后不会触发,但后台线程仍然存在。
我知道我可以将计时器移回主线程或使用 NSThread sleepForTimeInterval 创建自己的简单计时器线程,但我想保留主线程以进行 GUI 更新并尽可能使用 NSTimer。
iphone - 将捏/缩放效果添加到 UIScrollView 内的 UIImageView
我有一个非常基本的屏幕共享 iPhone 应用程序,我已经成功地将捏/缩放效果添加到我的应用程序中,UIImageView
使用UIScrollView
.
UIImageView
定期从 PC 接收屏幕内容。一切正常,但是一旦我滚动/捏合/缩放,它首先会起作用,但随后会停止,即使服务器仍在发送屏幕内容,更新图像视图内容的委托方法也会停止启动。整个应用程序似乎被冻结但没有错误消息/异常/无论如何。任何人都可以帮助我吗?