para objective descargar objective-c macos

objective c - objective - Deshabilitar la aplicación Nap en la aplicación MacOS 10.9(Mavericks)



xcode 9.4.1 download (2)

Estoy escribiendo una aplicación que recibe mensajes OSC. Sin embargo, debido a la tecnología App-Nap de 10.9, la aplicación deja de reaccionar en estos mensajes después de dejar el primer plano. Quiero deshabilitar AppNap para mi aplicación que se ejecuta en 10.9, pero aún así puedo ejecutarlo en 10.8, así que probé este fragmento de código, pero no muestra ningún efecto.

if ([[NSProcessInfo processInfo] respondsToSelector:@selector(beginActivityWithOptions:reason:)]) { [[NSProcessInfo processInfo] beginActivityWithOptions:0x00FFFFFF reason:@"receiving OSC messages"]; }

Ver código completo en github .

La condición if parece funcionar como se esperaba y se ejecuta en máquinas 10.9. Pero sin embargo la aplicación se envía a dormir. (El Monitor de actividad muestra "App Nap: Sí" para mi aplicación).

¡Gracias por tu ayuda!


A partir de su descripción del problema, suena como si quisiera echar un vistazo a WWDC 2013 704 y revisar la sección (cerca del final) sobre el trabajo continuo en segundo plano. Un vistazo al manual del comando setpriority también puede ser útil. No he tenido la necesidad de desactivar la siesta de la aplicación, pero creo que un cambio manual de la prioridad del proceso es un buen enfoque.

2013 WWDC Video 205 (cerca del medio) describe algunos aspectos interesantes de la siesta de la aplicación que pueden afectar el resultado de si la aplicación está limitada. El video 209 de la WWDC 2013 presenta las siguientes capturas de pantalla sobre la oclusión (el punto en el que participa la siesta de la aplicación) puede ser útil.

Espero que esto ayude.


la actividad necesita ser almacenada en una propiedad. Así que agregué esto en el archivo de encabezado:

@property (strong) id activity;

y luego usé esta implementación.

if ([[NSProcessInfo processInfo] respondsToSelector:@selector(beginActivityWithOptions:reason:)]) { self.activity = [[NSProcessInfo processInfo] beginActivityWithOptions:0x00FFFFFF reason:@"receiving OSC messages"]; }

Gracias a todos los colaboradores!