En primer lugar, ya se está trabajando en una aplicación para iPhone, que es mejor usar NSAssert() en lugar de la función de vainilla BSD afirman.
p. Ej. NSAssert(the_object, @"NIL object encountered");
La macro NSAssert lanzará una excepción Objective-C (NSInternalInconsistencyException
) si la afirmación falla.
Dado que su objetivo es romper la excepción, el siguiente paso es hacer la pausa depurador de Xcode sobre excepciones Objective-C. Esto es probablemente una buena cosa para hacer de todos modos.
En la ventana Puntos de interrupción (Run-> Presentación-> elemento de menú puntos de interrupción), haga clic en donde dice "Haga doble clic para Symbol" para introducir el símbolo -[NSException raise]
La última cosa que tener cuidado es que fuera NSAsserts do no compilar en una compilación de lanzamiento. Eso significa que debe estar preparado para manejar la excepción en su aplicación, o necesita crear su propia macro que compila en compilaciones de lanzamiento.
Aquí está la macro que utilizo para compilar cabo aseveraciones de código de ejecución (nótese que luego uso HMAssert en mi código en lugar de NSAssert):
#ifdef DEBUG
# define HMAssert(A,B) NSAssert(A,B)
#else
# define HMAssert(A,B)
#endif
Esto requiere una macro de depuración preprocesador para definir. Así es como poner esto en marcha:
- Haga clic en su proyecto en Xcode. Ese será el primer elemento en el panel de la izquierda, donde se enumeran los archivos de proyectos
- selecciona "Obtener información" en el menú contextual que aparece.
- Vaya a la pestaña "Crear".
- Asegúrese de que la "Configuración" esté configurada como "Depurar".
- Tipo de depuración en el campo junto a "preprocesador macros" en "GCC 4.2 - Preprocesamiento".
Raw NSAssert no es una opción, ya que la base de código debe ser compilable para plataformas que no sean de Apple. Si empiezo #definiendo el assert() básico, también podría lanzar el mío, que comencé a hacer de todos modos. Gracias por el consejo. –