向XPC服务发送消息时的EXC_BAD_INSTRUCTION

时间:2011-12-13 15:04:29

标签: macos cocoa ipc inter-process-communicat xpc

我正在尝试使用XPC服务进行进程间通信。我已经为我的项目添加了一个XPC服务目标,然后当我尝试xpc_connection_send_message时,我得到了EXC_BAD_INSTRUCTION。据我所知,我正确地初始化并开始连接。

serviceConnection = xpc_connection_create("com.foo.bar.MyService", dispatch_get_main_queue());

xpc_connection_set_event_handler(serviceConnection, ^(xpc_object_t event) {
    xpc_type_t type = xpc_get_type(event);

    if (type == XPC_TYPE_ERROR) {
        if (event == XPC_ERROR_CONNECTION_INTERRUPTED) {
            // The service has either cancaled itself, crashed, or been
            // terminated.  The XPC connection is still valid and sending a
            // message to it will re-launch the service.  If the service is
            // state-full, this is the time to initialize the new service.
        } 

        else if (event == XPC_ERROR_CONNECTION_INVALID) {            
            // The service is invalid. Either the service name supplied to
            // xpc_connection_create() is incorrect or we (this process) have
            // canceled the service; we can do any cleanup of appliation
            // state at this point.
            NSLog(@"Uh oh, connection invalid");
            xpc_release(serviceConnection);
            serviceConnection = nil;
            //xpc_release(stack);
            //stack = NULL;
        } 

        else {
            NSLog(@"Unknown XPC error.");
        }
    } 
});

xpc_connection_resume(serviceConnection);

然后发送消息

xpc_object_t message = xpc_data_create(NULL, 0);
....
xpc_connection_send_message(serviceConnection, message);

这里有什么我想念的吗?它是否以某种方式无法找到并连接到该服务?

0 个答案:

没有答案