Advertencia sobre la solución recomendada:
Este código hace que un desperdicio inútil y gastos generales:
for (;;) {
if ([NSApp runModalSession:session] != NSRunContinuesResponse)
break;
}
Este código se copia directamente desde la página de documentación de Apple - pero está destinado a mostrar al desarrollador donde se puede insertar un código significativo para la ejecución de fondo mientras se ejecuta el modal. Es decir, debe tener algún código entre el descanso y el corchete de cierre. Pero no hay un código real que se muestre en el ejemplo, y ejecutarlo así simplemente hace que la aplicación realice sondeos de la sesión repetidamente hasta que finaliza. Es como si el niño de dos años en el asiento trasero del automóvil en un viaje por carretera preguntara: "¿Ya llegamos? ¿Ya llegamos? ¿Ya llegamos? ..."
Si lo que desea es sencillo ejecución modal, donde su aplicación presenta una ventana modal y suspende la tramitación de las ventanas principales/fondo hasta que los extremos modales, utilice esto:
[NSApp runModalForWindow: self.window];
... y luego salir de la sesión modal cuando la ventana se cierra dejando caer esto en su subclase de controlador de ventana:
- (void)windowWillClose:(NSNotification *)notification {
[NSApp stopModal];
}
Técnicamente, no se llama una hoja si se está ejecutando en una forma de aplicación-modal. – JWWalker
Una alerta de aplicación modal con color de fondo y texto personalizado parece que podría ser bastante desagradable. ¿Realmente * necesitas * hacer esto? ¿Has leído las [Directrices de interfaz humana de Mac] (http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AppleHIGuidelines/Intro/Intro.html)? –
No es desagradable en absoluto, de verdad. Las alertas no se ajustan a mis necesidades, ya que estoy trabajando con una aplicación de pantalla completa y estoy usando 'NSStatusWindowLevel'. He leído esas pautas hace un tiempo, sí. – Fatso