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

时间:2014-08-05 14:46:28

标签: macos cocoa nsxpcconnection

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

但是,监听器的设置需要一个特定的主函数,并接管应用程序(省略标准的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 app的后台应用程序?

1 个答案:

答案 0 :(得分:0)

NSApplication是AppKit框架的一部分。因此,如果您将命令行工具编写为代理,则无法使用此工具。但你当然可以使用NSRunLoop。只需使用[[NSRunLoop currentRunLoop] run];启动runloop即可。在[listener resume]之后添加此内容应该可以保持流程正常运行。