问题标签 [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.
ios - 当主线程在IOS中被阻塞时,UIAlertView在线程中关闭
我有一个正在等待连接的应用程序。在应用程序等待时,我需要向用户显示 AlertView,它应该在某个时间后以编程方式或通过用户单击 AlertView 的取消按钮来关闭。
主线程正在等待客户端连接,而在另一个线程中,我正在创建并显示正在更新对话框时间的 AlertView。该线程有一个 NSRunLoop,它更新 AlertView 上的文本。
一切正常,除了 AlertView 不接收触摸事件,甚至它没有以编程方式被解雇。任何人都可以对我在这里可能做错的事情有所了解。
这是示例代码。
objective-c - 工作表窗口中的 NSTimer 未触发
我在面板中有一个计时器,我试图每秒触发一次,但是我似乎无法触发它。我正在创建我的面板,如下所示:
然后在我的 targetController 我有以下内容:
我的理解是,我通过添加带有 的计时器来正确执行此操作NSModalPanelRunLoopMode
,但是即使这样做,我的 updateDisplay: 选择器也永远不会被触发。
有人对我在这里做错了什么有任何想法吗?
注意:我也尝试过NSDefaultRunLoopMode
,但没有任何区别。计时器仍未触发。
编辑:我的总体目标如下 -
我的面板有一个表格视图,可以一次添加许多项目(来自多个线程)。所以我将项目添加到一个临时数组中,然后当计时器触发时,它将临时数组中的项目添加到主数组并重新加载表。以下是执行此操作的代码示例:
计时器更新时触发的方法:
不幸的是,如果没有计时器触发,我在表中根本没有任何条目。
下面是我正在尝试执行的操作的屏幕截图(条目已直接添加到主数组中。)
objective-c - 在 NSOperation 中使用 NSThread sleep
使用一些代码时,我遇到了运行循环,这是我刚接触的,在NSOperation
s.
s正忙于下载数据——当他们忙时,有代码以s 和线程休眠NSOperation
的形式等待下载完成。NSRunLoop
我特别感兴趣的是这段代码:
我已阅读有关运行循环的信息,runMode:beforeDate:
并将等待输入源或超时。虽然我不是 100% 算作输入源。
在第一次执行时,它总是返回 NO 并点击sleepForTimeInterval:
. 这很糟糕吗?
在特定的实用程序类中,它的sleepForTimeInterval:
影响很大——每个线程一次——这会严重影响性能。
对此有更好的解决方案或建议吗?
objective-c - iOS dispatch_async 和 NSURLConnection 委托函数没有被调用
我认为我已经编辑了这篇文章以使其更易于阅读。
在 dispatch_async 块中完成一些密集的字符串操作后,我需要调用 NSUrlConnection。
我调用的 URL 有 .htaccess 身份验证,所以我不能使用同步连接。
但是没有调用 NSURLConnection 委托方法。我知道 URL 在浏览器中大约 5 秒后加载,并且我已经使用没有身份验证的简单 URL 测试了代码,它没有任何区别。
是什么阻止了委托方法被调用?
这个函数做了一些字符串操作,需要一段时间才能完成:
这是在上面的块末尾调用的那个
更新:我也试过这个,因为它在另一个类似问题的答案中被接受,但它没有奏效:
基于这个问题:Why NSURLConnection delegate methods don't get call, when using the global dispatch queue?
objective-c - 在iphone上通过ftp在后台上传文件
我正在尝试在应用程序中建立 FTP 连接。我想将几个文件上传到 FTP 服务器,所有文件都在一个目录中。所以首先我想创建远程目录。
此代码在使用以下调用在后台线程中执行时不起作用:
我的猜测是(后台线程)运行循环没有运行?如果我在主线程内发送消息,则上传工作正常:
由于主线程的运行循环已启动并正在运行。
但是要上传相当大的文件;所以我想把这个工作量放在后台线程中。但是我如何以及在哪里设置 NSRunLoop,以便整个上传发生在后台线程中?苹果关于 NSRunLoops 的文档(尤其是如何在不使用计时器/输入源的情况下启动它们,如本例)并没有帮助我。
iphone - 如何将 [NSRunLoop runUntilDate:] 重写为 GCD 代码?
只是出于我的好奇,我正在尝试重写以下代码
使用 Grand Central Dispatch 进入代码。
我尝试使用 dispatch_source_t、dispatch_semaphore_t 和 dispatch_after,但效果不佳:( 我需要你的帮助!
请注意,我不想用任何块包装 SVProgressHUD 的方法!
objective-c - 不同 runLoop 上的 HID 报告回调
我已经使用 IOHIDManagerScheduleWithRunLoop 在主线程 (runLoop) 上安排了 HIDManager。所以,我在主线程上得到了设备匹配和删除回调。
但是,我已经在另一个线程上安排了一个设备IOHIDDeviceScheduleWithRunLoop,比如说 Thread-1。根据它的文档,当我设置报告时,我应该在 Thread-1 RunLoop 上收到回调。
IOHIDDeviceScheduleWithRunLoop(inIOHIDDeviceRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
但是,我在主线程上收到 HIDReport 回调。有什么帮助吗?
更新:
即使我删除了 IOHIDDeviceScheduleWithRunLoop,我也看到报告回调被调用。报告回调应该在设备 RunLoop 上调用。
根据 IOHIDManagerScheduleWithRunLoop 的文档,“这正式将 HID 管理器与客户端的运行循环相关联。此计划将传播到当前枚举的所有 HID 设备以及与 HID 管理器匹配的新 HID 设备”
这应该只用于匹配和删除,但我也得到了输入报告。
objective-c - 无效后如何“验证” NSTimer?
所以基本上,我有这个计时器,当它收到一个按键事件时应该重复这个计时器,并在用户释放按键时失效。addTimer:forMode:
但是,即使通过调用NSRunLoop ,我也无法“验证”计时器。有谁知道为什么会这样以及我该如何解决这个问题?谢谢。
objective-c - NSRunLoop 只运行直到所有事件都完成
NSRunLoop 和 CFRunLoop 中有方法,要运行到特定时间 CFRunLoopInMode 和 NSRunLoop - runUntillDateT
这些方法指定运行的时间,直到。
但是,我想处理 runLoop 中的所有消息,如果它完成并且空闲则退出。因为一些 runLoop 源可以有无限的时间来处理。所以,我不能说时间。
ios - HttpConnection、UITableView 和 RunLoops 以及从磁盘加载
我正在将图像加载到表格视图的大网格中。它们来自网络,但一旦下载它们就会被缓存到磁盘。
我用这个:
以确保它们在我仍在滚动时加载到视图中。工作正常。
但是,当我重新访问它们并且它们正在从磁盘加载时 - 我没有相同的 scheduleInRunLoop 方法可以使用......我可能会,但我不知道它在哪里。
有没有人有任何想法?
谢谢