我需要编写我的应用程序和系统插件都可以使用的Mach服务,我使用NSMachPort API创建一个新端口,然后将它注册到NSMachBootstrapServer
- (void) run
{
NSMachPort *serverPort = (NSMachPort *)[NSMachPort port];
[serverPort setDelegate:self];
[serverPort scheduleInRunLoop:NSRunLoop.currentRunLoop forMode:NSDefaultRunLoopMode];
[NSMachBootstrapServer.sharedInstance registerPort:serverPort name:@"com.example.MyApp"];
[NSRunLoop.currentRunLoop run];
}Clang抱怨说,NSMachBootstrapServer已被废弃:
warning: 'NSMachBootstrapServer' is deprecated: first deprecated in macOS 10.13 - Use NSXPCConnection instead在编写非XPC服务时,如何使用NSXPCConnection替换NSMachBootstrapServer的功能?
发布于 2019-07-25 17:48:52
没错:NSMachBootstrapServer类和它的大多数伴生类都是已弃用在macOS 10.13高级塞拉利昂。
在macOS 10.14 Mojave和更高版本中,您必须使用
NSXPCConnectionAPI,这是Foundation模块的一部分。它在头文件NSXPCConnection.h中进行了描述。目前,它由以下四个主要类组成:
以下是XPC连接过程的样子:

正如您在图片中所看到的,您必须实现一个侦听器。
下面是使用监听器的Swift代码片段的外观:
let listener = NSXPCListener(machServiceName: "Name-of-Sample.Helper")
listener.delegate = delegate
listener.resume()
RunLoop.current.run()下面是带有监听器的Obj代码片段的外观:
self.listener = [[NSXPCListener alloc] initWithMachServiceName:@"Name-of-Sample.Helper"];
self.listener.delegate = self;
[self.listener resume];
[[NSRunLoop currentRunLoop] run];--如果您查看 这篇文章 ,您将了解如何正确实现所有必要的XPC连接对象。
还有..。
https://stackoverflow.com/questions/54188295
复制相似问题