Quiero que mi aplicación nunca se cuelgue estúpidamente. Sé que la calidad del código es la solución raíz para esto. Pero aún necesito una aplicación que nunca se bloquee cuando ocurre algún error inesperado. Aquí está el código que quiero probar.Desarrollo de iPhone: cómo capturar Exception/NSError en Objective-C?
-(void)testException
{
@try
{
NSString* str;
[str release];
}
@catch(NSException* ex)
{
NSLog(@"Bug captured");
}
}
Sé que este no funciona. Porque release
nunca genera una excepción. Aquí están mis preguntas:
- ¿Cómo se llega a este tipo de objetivo, se capturará el error, no se bloqueará?
- ¿Cómo puedo saber qué biblioteca del sistema generará una excepción y entonces puedo escribir un código y saber que funciona?
Esto es lo que he leído
- a. Excepción Temas de programación para Cocoa
- b. Manejo de errores de programación
Guía para el cacao
Vengo de un fondo programador de Microsoft con experiencia en la que captura una excepción o una excepción inesperada siempre impiden que mi programa de estrellarse en un ambiente muy malo.
¿Cómo hicieron muchachos/chicas (programadores de Mac genio) para que los programas sin choques ocurrieran? Comparte tu experiencia.
Gracias por la respuesta. Su respuesta me ayuda a comprender mejor el manejo de la memoria y ampliar mi conocimiento sobre el Objetivo C. Sin embargo, he intentado con el código, nunca se bloquean (Deben serlo, lo lanzo 4 veces, el recuento de referencias debería ser -3 si es posible). pero no se produjo ningún bloqueo en absoluto, tampoco se lanzó ninguna excepción. Sé que se bloqueará alguna vez. pero no se cuando. Entonces, de vuelta a lo básico, ¿hay alguna forma de evitar el bloqueo? –
No se preocupe por retener los conteos. Nunca debes verificarlo, nunca es lo que crees que debería ser por varias razones. Debe encargarse de la administración de la memoria un método a la vez. Busque Stackoverflow y google para la gestión de la memoria de cacao. Hay muchos recursos para ayudarlo. Puede ser difícil de aprender al principio, pero se vuelve más automático. –