Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

485
Visualizações
NSMachBootstrapServer está en desuso, ¿cómo se puede usar NSXPCConnection para registrar un servicio Mach?

Necesito escribir un servicio Mach con el que puedan hablar tanto mi aplicación como un complemento del sistema, uso la API de NSMachPort para crear un nuevo puerto y luego lo registro con 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 se queja de que NSMachBootstrapServer ha quedado obsoleto:

 warning: 'NSMachBootstrapServer' is deprecated: first deprecated in macOS 10.13 - Use NSXPCConnection instead

¿Cómo se usa NSXPCConnection para reemplazar la funcionalidad de NSMachBootstrapServer al escribir un servicio mach que no es XPC?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Eso es cierto: la clase NSMachBootstrapServer y la mayoría de sus clases complementarias están obsoletas en macOS 10.13 High Sierra.

En macOS 10.14 Mojave y superior, debe usar una API NSXPCConnection , esa es la parte del módulo Foundation . Se describe en el archivo de encabezado NSXPCConnection.h . Por el momento consta de las cuatro clases principales:

  • NSXPCConexión
  • Interfaz NSXPC
  • NSXPCListener
  • NSXPCListenerEndpointNSXPCListenerEndpoint

Así es como se ve un proceso de conexión XPC:

ingrese la descripción de la imagen aquí

Y como puede ver en una imagen, debe implementar un oyente.

Así es como se vería un fragmento de código Swift con un oyente:

 let listener = NSXPCListener(machServiceName: "Name-of-Sample.Helper") listener.delegate = delegate listener.resume() RunLoop.current.run()

Así es como se vería un fragmento de código Obj-C con un oyente:

 self.listener = [[NSXPCListener alloc] initWithMachServiceName:@"Name-of-Sample.Helper"]; self.listener.delegate = self; [self.listener resume]; [[NSRunLoop currentRunLoop] run];

Si observa esta publicación , descubrirá cómo implementar correctamente todos los objetos necesarios de XPC Connection .

y...

Si observa esta publicación , también descubrirá cómo se puede usar con un servicio Mach (hay un enlace de GitHub) .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda