Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

486
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!