使用NSXPCListener执行常规任务的助手应用程序



我的助手代理应用程序需要在启动后不断执行一个活动,但它也需要通过XPC与主应用程序进行通信

然而,监听器的设置需要一个特定的main函数,它接管了整个应用程序(省略了标准的AppDelegate NSApplication方法)

int main(int argc, const char *argv[])
{
    NSString *bundleId = [[NSBundle mainBundle] bundleIdentifier];
    NSXPCListener *listener = [[NSXPCListener alloc] initWithMachServiceName:bundleId];
    XX *xx = [XX new];
    listener.delegate = xx;
    [listener resume];
    return 0;
}

如何兼得?后台应用程序与NSRunLoop和NSXPCListener应用程序?

NSApplication是AppKit框架的一部分。因此,如果您将命令行工具作为代理编写,则不能使用此功能。当然你仍然可以使用NSRunLoop。只需用[[NSRunLoop currentRunLoop] run];启动一个运行循环。在您的[listener resume]之后添加它应该保持进程的启动和运行。

最新更新