IOHIDEventSystemClientScheduleWithRunLoop 与 EXC_BAD_ACCESS

2024-02-11

我正在尝试在我的应用程序中获取触摸事件。所以我使用 IOHIDFamily 回调来获取事件。我的代码是这样的:

void handle_event(void* target, void* refcon, IOHIDServiceRef service, IOHIDEventRef event)
{
    printf("Received event of type %2d from service %p.\n", 
           IOHIDEventGetType(event), service);
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    void *ioHIDEventSystem = IOHIDEventSystemClientCreate(kCFAllocatorDefault);
    IOHIDEventSystemClientScheduleWithRunLoop(system, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
    IOHIDEventSystemClientRegisterEventCallback(system, handle_event, NULL, NULL);
    CFRunLoopRun();
}

我执行时出现错误:

IOHIDEventSystemClientScheduleWithRunLoop(系统, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);

IOKit`IOHIDEventSystemClientScheduleWithRunLoop:
...
0x32f8fd14: cmp.w r10, #0
0x32f8fd18:strd r10,r11,[r4,#116] 0x32f8fd1c:beq 0x32f8fdac; IOHIDEventSystemClientScheduleWithRunLoop + 168
0x32f8fd1e:ldr r1,[r4,#96]
0x32f8fd20:cbz r1,0x32f8fd2a; IOHIDEventSystemClientScheduleWithRunLoop + 38
0x32f8fd22:mov r0,r10
...

我是否以错误的方式使用 IOHIDFamily?


我在发布的代码中至少看到几个问题:

首先,您正在调用

CFRunLoopRun();

in the viewDidLoad方法,该方法将在主/UI 线程上调用。我认为没有理由这样做,所以只需删除该行即可。如果您有一个在后台线程上运行的方法,并且需要启动后台运行循环,我通常希望看到该调用。或者,如果您直接在中注册回调main(), 正如在这个答案中 https://stackoverflow.com/a/15118510/119114.

然后,你有这个:

void *ioHIDEventSystem = IOHIDEventSystemClientCreate(kCFAllocatorDefault);
IOHIDEventSystemClientScheduleWithRunLoop(system, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);

我猜第二行应该是

IOHIDEventSystemClientScheduleWithRunLoop(ioHIDEventSystem, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);

我不知道是什么system变量实际上指的是,但看起来不对。

Take a 看看这个最近的答案 https://stackoverflow.com/a/15550916/119114,因为它似乎使用IOKit正确。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IOHIDEventSystemClientScheduleWithRunLoop 与 EXC_BAD_ACCESS 的相关文章

  • skView.ignoreSiblingOrder 在 swift 中的重要性/效率?

    这样做有多重要 高效skView ignoreSiblingOrder true初始化场景时 现在 我将其设置为 true 但由于某种原因 当我从 MainMenu 场景启动 GameScene 时 它 会在我的角色之前加载背景 即使背景的
  • 显示器连接或断开连接时的通知

    我正在开发一个 OS X 应用程序 该应用程序在所有连接的显示器的所有可用空间上显示自定义窗口 我可以通过调用 NSScreen Screens 获取可用显示对象的数组 我目前缺少的是一种判断用户是否将显示器连接到系统或从系统断开屏幕的方法
  • 无法安装企业应用程序 - 此配置文件无法安装在此设备上

    我正在设置 Jenkins 来构建应用程序的企业版本 以便在我们的内部应用程序商店中分发 如果我将应用程序存档在 Xcode 中 然后在手机上下载内置的 ipa 则应用程序安装不会出现任何问题 但是当我使用 Jenkins 生成的具有相同私
  • 以编程方式向 UIButton 标签添加阴影

    我试图向按钮标签添加 1px 黑色阴影 但没有成功 我试过这个 self setTitleShadowOffset CGSizeMake 0 1 但我得到 请求非结构或联合中的成员 setTitleShadowOffset 任何建议都会很棒
  • NSOperation 中委托的使用

    我正在尝试利用CLLocationManager in an NSOperation 作为其中的一部分 我需要能够startUpdatingLocation然后等到收到 CLLocation 后才完成操作 目前我已经完成了以下操作 但是委托
  • AppDelegate 的变量用作全局变量不起作用

    我想使用我的 AppDelegate 来存储任何其他类都可以访问的对象 我已经像这样声明了这个 AppDelegate interface MyAppDelegate UIResponder
  • iOS:将观察者添加到 UIView 的frame.origin.y?

    我正在尝试监视 UIView 框架原点的变化值并对其做出反应 我的代码 cell bottomView addObserver self forKeyPath frame origin options NSKeyValueObserving
  • AFNetworking 上传图片

    我看过一些例子 但我认为我的问题可能出在 PHP 中 我正在尝试使用 AFNetworking 将图像从 iPhone 上传到服务器 这是我的 obj c 代码 IBAction uploadButtonClicked id sender
  • 核心数据:为什么必须调用重新加载数据才能使我的应用程序运行?

    我花了整个晚上调试一个简单的应用程序 该应用程序从网络检索一张图像 是的 是的 旨在让我的生活更轻松 并将其显示在表格视图中 我这样做是为了练习学习核心数据 在我修复它之前 错误消息显示如下 2012 09 30 06 16 12 854
  • ShareKit + Facebook 身份验证不起作用

    我正在使用 ShareKit 从我正在开发的 PhoneGap 应用程序发布到 Facebook 我在 Facebook 中创建了该应用程序 并在我的项目中安装了该插件 Twitter 工作正常 但当我尝试在 Facebook 上分享时出现
  • ios Vision VNImageRequestHandler方向问题

    我正在尝试使用相机通过相机检测脸部VNImageRequestHandler iOS 愿景 当我在横向模式下用相机指向照片时 它会检测到面部 但方向模式相反 let detectFaceRequestHandler VNImageReque
  • PhoneGap 1.4 封装 Sencha Touch 2.X - 性能怎么样?

    我正在构建一个多平台平板电脑应用程序 仅使用其 Webview 使用 Phonegap 1 4 对其进行包装 然后使用 Sencha Touch 2 框架发挥我的魔力 我所说的多平台是指 iOS 5 X 和 Android 3 0 目前 到
  • 将语音添加到自定义 UIMenuController

    我创建了一个自定义UIMenuController in a UIWebView但它似乎摆脱了 说出选择 选项UIMenuController在那之后 所有测试设备上的 偏好设置 中都打开了发言选择选项 并且它出现在其他应用程序中 包括非
  • UITextView:内存使用量巨大

    我在 UITextView 中遇到了内存使用过多的问题 我正在将 50Kb ascii 文本文件加载到 NSString 中 并将其分配给应用程序中空 UITextView 组件的 text 属性 这立即使我的内存占用量增加了 100Mb
  • 将捕获的图像精确裁剪为 AVCaptureVideoPreviewLayer 中的外观

    我有一个使用 AV Foundation 的照片应用程序 我使用 AVCaptureVideoPreviewLayer 设置了一个预览层 它占据了屏幕的上半部分 因此 当用户尝试拍照时 他们只能看到屏幕上半部分看到的内容 这很好用 但是当用
  • 如何以编程方式使用资产目录图像的切片信息?

    我的项目中曾经有一个图像 我会像这样加载它 UIImage image UIImage imageNamed image name resizableImageWithCapInsets UIEdgeInsetsMake 10 0f 10
  • 如何从 Firebase 同步检索数据?

    我有两个集合 即用户和问题 根据使用 userId 登录的用户 我检索currQuestion价值来自users收藏 基于currQuestion值 我需要检索question来自 Firebase 的文档Questions收藏 我使用下面
  • 断点条件错误

    我已经根据条件设置了断点 event name isEqualToString Some Name 这很好用 但是 当我尝试添加另一个带有条件的断点时 part name isEqualToString Some Value With A
  • iOS 13 检查 CLLocationManager 的临时授权状态

    根据 WWDC 视频 https developer apple com videos play wwdc2019 705 https developer apple com videos play wwdc2019 705 当你要求 Al
  • iOS WKWebView 处理文件下载

    我面临以下问题 在 Web 界面中 文件下载是通过锚标记触发的 如下所示 a href bla blabla a 虽然 Safari 浏览器可以处理此请求并打开一个对话框来处理文件 但 WKWebView 将此视为普通链接并且不对其执行任何

随机推荐

  • Xamarin Forms MVVM (Prism) with Media.Plugin - 如何从设备存储中获取拍摄的照片

    我正在使用 Xamarin Forms PCL MVVM Prism 和 MediaPlugin https github com jamesmontemagno MediaPlugin https github com jamesmont
  • MethodInfo.Invoke参数顺序

    我正在尝试使用反射调用方法 像这样的事情 method Invoke instance propValues ToArray 问题是没有办法确保参数数组的顺序正确 有没有办法通过名称来指定哪些值适用于哪个参数 或者我真的必须制作一个定制活页
  • 允许调试器;某些文件中的语句,使用 ESLint

    假设我想使用这个规则 https eslint org docs rules no debugger https eslint org docs rules no debugger 但是 我想在其中保留大约 15 个文件 声明 我可以在 t
  • 将额外的系统属性添加到 Eclipse 编程重启

    我有一个插件 可以使用以下命令强制重新启动 Eclipse Workbench getInstance restart 但是 我需要重新启动以包含新的环境变量 eclipse refreshBundles true 有什么方法可以仅为下次重
  • 无法在 Python 3.6.6 上的 Open CV 3.4.1 上运行跟踪

    我尝试在 python 3 6 6 上使用 open CV 运行跟踪 但它显示 AttributeError 模块 cv2 没有属性 TrackerKCF create 我也尝试了 python 2 7 API 但结果相同 Attribut
  • 使用 mongodb 聚合框架计算频率

    我正在尝试根据 10 秒的间隔计算数据库中文档的频率 这就是我的数据库对象的样子 created at 2014 03 31T22 30 48 000Z id 450762158586880000 id 5339ec9808eb125965
  • 带区域的 Orchard/MVC WCF 服务 URL

    Bertrand 创建了一个博客post http weblogs asp net bleroy archive 2011 04 20 orchard 1 1 what s in it for developers aspx指定如何在 Or
  • 如何在 gcc 中强制执行 C89 风格的变量声明?

    我工作的代码库主要是 C 和一点点 C 并且主要是用 gcc 构建的 但有时需要用 MSVC 构建 微软的 C 编译器仍然是 C89 带有一些小的扩展 并且它仍然不支持混合代码和变量定义 laC C99 因此 我需要找到一种方法来防止开发人
  • Android 键盘显示后 jQuery 移动页脚或视口大小错误

    我的 jquery 移动网络应用程序遇到以下问题 我的 jquery 应用程序有一个固定的页脚 但是当 android 键盘打开时 即单击浏览器栏并手动重新加载页面时 视口似乎仅从顶部 浏览器栏下方 向下到上部键盘边缘 然后页面重新加载 视
  • 对于特殊字符,URL 编码失败。 #安卓

    我正在研究需要的解决方案encode串入utf 8格式 这个字符串只是我正在读取的设备名称BluetoothAdapter getDefaultAdapter name 对于其中一个示例 我得到了一个像这样的字符串ABC and encod
  • Angular 指令 ng-if 不评估条件语句

    我是 Web 开发和 AngularJS 的新手 我尝试使用指令 ng if 仅在从数据库返回的列表大于 1 时显示 div 块 但它不起作用 我是否滥用了该指令 我环顾四周 没有找到任何有效的解决方案 目前 两个 div 都会显示 并且
  • 通过 Karma 运行时如何调试 PhantomJS

    我通过 Jasmine Karma 和各种浏览器进行测试 我目前正在调试一个仅在 PhantomJS 中失败的测试 我想调试这个调用 所以我在 karma 中设置了一个自定义 PhantomJS 启动器 它在调试端口打开的情况下运行它 我可
  • 检测圆形(非精确圆形)路径算法?

    我收到一个路径 来自触摸事件的 x y 坐标列表 如何检测该路径形成圆形路径 不是完整或精确的圆 有什么算法或方法可以检测到这一点吗 这是一篇论文 总结了将圆拟合到数据的各种方法 http www cs bsu edu homepages
  • ios metal:着色器中使用的变量数量限制

    在向着色器添加一些复杂性后 我今天开始收到以下错误 Execution of the command buffer was aborted due to an error during execution Discarded victim
  • 多个视图控制器上的相同 UIProgressView

    PREAMBLE 我有一个 iOS 应用程序 有两个页面的注册过程 我在每个页面上安装了一个 UIProgressView 来测量用户在所述注册过程中的累积进度 目前 注册过程由六个字段组成 当文本字段完成编辑时 现有的 UIProgres
  • 使用 Moq 可以验证匿名类型的方法调用吗?

    我正在尝试使用 Moq 验证方法调用 但我无法完全正确地理解语法 目前 我已将此作为我的验证 repository Verify x gt x ExecuteNonQuery fav AddFavorites new fid 123 inp
  • 如何删除 bash 中多余的空格?

    如何删除变量中多余的空格HEAD HEAD how to remove extra spaces Result how to remove extra spaces 尝试这个 echo HEAD tr s 或者也许您想将其保存在变量中 NE
  • Ajax 没有 JQuery? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在没有jquery的情况下进行ajax调用 https stackoverflow com questions 8567114 how to make an ajax call without j
  • AWS CLI 命令适用于 Bash,但不适用于 PHP shell_exec()

    我想触发以下命令 aws route53 change resource record sets hosted zone id XXX change batch Comment 2018 06 19 11 31 Changes Action
  • IOHIDEventSystemClientScheduleWithRunLoop 与 EXC_BAD_ACCESS

    我正在尝试在我的应用程序中获取触摸事件 所以我使用 IOHIDFamily 回调来获取事件 我的代码是这样的 void handle event void target void refcon IOHIDServiceRef service