【问题标题】:IOHIDEventSystemClientScheduleWithRunLoop with EXC_BAD_ACCESS带有 EXC_BAD_ACCESS 的 IOHIDEventSystemClientScheduleWithRunLoop
【发布时间】:2013-03-26 04:43:32
【问题描述】:

我正在尝试在我的应用程序中获取触摸事件。所以我使用 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(system, 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: 移动 r0, r10
...

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

【问题讨论】:

    标签: ios objective-c jailbreak iphone-privateapi iokit


    【解决方案1】:

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

    首先,你在打电话

    CFRunLoopRun();
    

    viewDidLoad 方法中,该方法将在主/UI 线程上调用。我认为没有理由,所以只需删除该行。如果您有一个在后台线程上运行的方法,并且您需要启动后台运行循环,我通常希望看到该调用。或者,如果您直接在 main()as in this answer 中注册回调。

    那么,你有这个:

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

    我猜第二行应该是

    IOHIDEventSystemClientScheduleWithRunLoop(ioHIDEventSystem, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
    

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

    采取look at this recent answer,因为它似乎正确使用了IOKit

    【讨论】:

      猜你喜欢
      • 2012-01-22
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多