我的助手代理应用程序需要在启动后不断执行一个活动,但它也需要通过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]
之后添加它应该保持进程的启动和运行。