问题标签 [cfrunloop]
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 - 在 nsoperation 内部使用 Runloop 执行异步任务
我有一个用例,我需要使用 NSURLSession 下载许多文件。
为了防止 sessiontasks 超时,我需要将它们放在操作队列中并限制并发下载量,这样它们就不会饿死。
我的想法是将任务恢复加载到 nsoperation 中,并将它们加载到 nsoperationqueue 中,这将限制并发活动的数量。
问题是当我调用 [task resume] 时,代码将退出并且 nsoperation 将认为自己完成,即使我正在等待文件完成下载。
这是一些代码。
在等待回调时如何保持 nsoperation 线程处于活动状态?我也尝试过使用 nsrunloop 并向 NSMachPort 添加一个端口。这似乎没有帮助。
此外,在 NSURLSession 上设置 HttpMaximumConnectionsPerHost 也无济于事,因为超时计时器在我恢复任务时开始。这意味着我将获得比以前更多的超时。
cocoa - NSUndoManager.groupsByEvent 如何判断当前运行循环是否通过?
我想了解/复制“按运行循环传递/循环分组”功能NSUndoManger
:
NSUndoManager
在同一个运行循环循环中多次调用时,可以将多个调用组合registerUndo()
成一个“撤消”操作。这是由 确定的NSUndoManager.groupsByEvent
,默认情况下设置为true
。
所以是这样的:
...产生一个撤消组,然后单击编辑 → 撤消一次还原两个更改。
不知何故,NSUndoManager 可以确定两个调用registerUndo()
是否在同一个运行循环周期中。这是如何运作的?
我的用例:
我有在用户与 UI 交互(例如单击按钮)后发送属性更改通知的代码。作为用户操作的结果,可以有一个或多个事件。我想将它们分组并在当前运行循环结束时只更新一次 UI。
ios - iOS 11.2 CFRunLoopServiceMachPort 的应用程序崩溃
我的应用程序发生了一些 CFRunLoopServiceMachPort 崩溃。我一直在试图找出造成这种情况的根本原因。
我在后台线程中执行了一些任务,以避免主线程拥塞。我想这可能有一些影响。
老实说,我不明白我的问题在哪里。
以下是我的崩溃日志:
memory-leaks - 在 Mac 上调用 CFNetworkExecuteProxyAutoConfigurationURL 时泄漏
我正在使用 CFNetwork API 来检测操作系统代理设置。我的设置很大程度上基于此: https ://github.com/adobe/chromium/blob/master/net/proxy/proxy_resolver_mac.cc 这与此几乎相同: https ://developer.apple.com/ library/archive/samplecode/CFProxySupportTool/Introduction/Intro.html
我使用 CFNetworkCopyProxiesForURL 来获取代理列表,对于 PAC 类型,使用 CFNetworkExecuteProxyAutoConfigurationURL 来获取并执行 PAC 脚本,立即在当前线程上运行 run loop,这已经不在 ui 线程上。
这一切都正常工作,我仔细梳理了确保我遵循创建规则以正确发布结果。但是,在使用 Xcode 工具时,我看到 std::shared_ptrs 到 PAC::PACClient 被 _CFNetworkExecuteProxyAutoConfigurationURLDelegated 泄露。由于该对象从未暴露给我,我不确定如何控制它的释放,但它正在泄漏。这只是获取 PAC 文件的问题,显式代理不会泄漏。我已经尝试在所有 CFDictionaries 上添加冗余的 CFRelease 调用,并且向我展示了这些调用是否被过度保留,但这对 PACClient 泄漏没有影响。
这是在 Mac 上的一个 cpp 文件中,而不是目标 C,在一个启用了 ARC 的项目中。
有没有人遇到过这种泄漏并知道如何防止它?
下面是执行查找的代码片段,与上述项目中的所有步骤相同。
macos - Macos 应用程序在使用 NSDistributedNotificationCenter 和 CFRunLoopAddSource 时挂起
我有使用 Qt 构建的 MacOS 应用程序。在那里,我创建了 NSDistributedNotificationCenter 以在可访问性设置更改时收到通知(观察“com.apple.accessibility.api”)。我也有 CFRunLoopAddSource 来监控按键事件。
但是,当我运行程序并更改辅助功能时,应用程序挂起并且无法正常运行。
有人可以帮忙看看为什么会这样吗?
这是代码:
在这里我正在创建观察者:创建/删除由按钮单击控制
这就是我添加关键事件记录器的方式:
请问有什么想法吗?
提前致谢和问候
macos - 自定义 runloop 上的 NetworkExtension API 调用
我正在使用 Apple 的 NetworkExtension 框架开发一个应用程序,该框架应该进行一些基本的网络流量过滤。但是,我发现使用网络扩展 API 存在问题。应用程序本身正在使用 kevents 在自定义运行循环实现上运行,这似乎是问题的原因。我尝试创建基于 Cocoa 的简单应用程序,该应用程序在内部使用 CFRunLoop 并且一切都可以正常工作。另一方面,当我尝试使用 API 创建简单的命令行应用程序时,也无法正常工作,这是可以理解的,因为那里没有运行循环。这个问题有一些解决方法吗?