afirmaciones de desarrollo que utilizan iOS -NSAssert ()

Assert (afirmación) se refiere a la utilización durante el desarrollo, por lo que el código de programa de auto-prueba (generalmente una subrutina o macro) en tiempo de ejecución. Afirmación es cierta, esto indica que los procedimientos normales de operación, y la afirmación es falsa, lo que significa que se ha descubierto error inesperado en el código. Afirmación es particularmente útil para programas grandes y complejos o programas para los requisitos de alta fiabilidad.

Para obtener más información acerca de las afirmaciones, debemos recomendar a ver "Complete Código 2" en el capítulo "programación defensiva". A continuación, extractos de algunos de los códigos clásicos de una guía completa y el asesoramiento sobre el uso de afirmaciones:

 

  1. Se espera que con el control de errores de código para manejar la situación que se produzca, con la afirmación de que lidiar con la situación no debería ocurrir nunca.

  2. Para evitar la ejecución de código de necesidades a las afirmaciones de venta

  3. Y anotada con las afirmaciones para verificar las condiciones antes y después de las condiciones

  4. Para una alta robustez del código, se debe utilizar afirmaciones reprocesamiento errores

datos fiables de los sistemas internos de usar afirmaciones, en lugar de los datos sobre las afirmaciones poco fiables externos, por datos poco fiables externos, debe utilizar el código de control de errores. Afirmación puede ser visto como anotaciones ejecutables.

datos del sistema externo (entrada de usuario, archivos, red lee, etc.) no son creíbles, la necesidad de controles estrictos (por lo general manejo de errores) puede ser liberado en el sistema interno, lo que equivale a un guardia. En cuanto a la interacción dentro del sistema (por ejemplo, llamadas a subrutinas), también tienen que hacer frente a si cada entrada de datos, es equivalente al sistema no es creíble frontera, y hace que el código se vuelve compleja hinchada, de hecho, en el sistema en el interior, se pasa a la subrutina deseada datos apropiados deben ser responsabilidad de la persona que llama, la persona que llama en el sistema debe asegurar que los datos se pasa a la subrutina es apropiado que funcione correctamente. Por lo tanto, para aislar entorno externo poco fiables y el sistema fiable ambiente interno, reducir la complejidad.

Sin embargo, durante la fase de desarrollo, el código es probable que contenga defectos, tal vez maneja los datos externos consideran lo suficientemente amplia, tal vez hay un error dentro de un sistema de código de llamada a subrutina, lo que resulta en una llamada a subrutina falla. Esta vez, la afirmación puede desempeñar un papel, ser confirmados en el extremo que parte del problema que dio lugar a la aparición de una llamada a subrutina falla. Después de limpiar todos los defectos del sistema de crédito diferenciado establecido. Espere hasta que el tiempo de liberación, estas afirmaciones deben ser sin necesidad de existir.

En el desarrollo de iOS, se puede utilizar el NSAssert macro () afirma procesamiento en el programa. NSAssert () utiliza correctamente, puede ayudar a los desarrolladores a localizar fallo tan pronto como sea posible. Los desarrolladores no necesitan en cada versión de la aplicación se comprueban afirma, porque la mayoría de los proyectos están disponibles en dos versiones: la versión de depuración y la versión de lanzamiento. En la versión de depuración, los desarrolladores esperan que todas las afirmaciones se comprueban, y en la versión de lanzamiento, a menudo desactiva la comprobación afirmación. conjunto de versiones de lanzamiento desactivar las afirmaciones de la siguiente manera:

En el menú de configuración de generación, encontrar el elemento preprocesador macros, macros de preprocesador Los siguientes artículos tienen una opción, para el programa para generar la configuración: la versión de depuración y la versión de lanzamiento. Seleccione la entrada de lanzamiento, NS_BLOCK_ASSERTIONS conjunto, no cheques afirmación. Como se muestra en la figura.

En este sentido, la función de impresión dentro de un nombre, añadiendo afirmaciones a los procedimientos que se encuentran en la entrada del nombre está vacío, se produce una excepción.

 

 
  1. - (void)printMyName:(NSString *)myName

  2. {

  3. NSAssert(myName != nil, @"名字不能为空!");

  4. NSLog(@"My name is %@.",myName);

  5. }


Cuando los parámetros pasados ​​a la función (myName) está vacía, la afirmación se va a ejecutar, el programa de choque, e imprime la información de descripción afirmación. En esta realización, las impresiones de la consola vence registros de la siguiente manera:

 

 

NSAssert [1268: a0b] *** error de aserción en - [ViewController printMyName:]  

NSAssert / NSAssert / ViewController.m: 38

21/11/2013 13: 56: 01,927 NSAssert [ 1268: a0b] *** aplicación de terminación debido a excepción no detectada 'NSInternalInconsistencyException', razón: ' nombre no puede estar vacía! '

Afirmación nos dice que los parámetros de entrada no puede ser nulo, por ello, es fácil determinar la causa del error y dónde se produjo el error.

Si se pasa un parámetro no es nulo, el programa imprimirá el nombre correcto de entrada:

Mi nombre es UnivCore.

A continuación, vamos a probar el programa se ajusta a la versión de lanzamiento, basado en la serie anterior, incluso cuando el parámetro pasado está vacía, no se ejecutará la afirmación. Se establece en la versión de lanzamiento del método es el siguiente:

Haga clic Producto-> Scheme-> Editar Esquema ... (puede ser combinaciones de teclas directas Comando + Mayúsculas +,), tecla de selección Ejecutar y, a continuación, modificar el panel Información Construir configuración de lanzamiento, la generación actual puede estar dispuesto para el cambio para el lanzamiento. A continuación, generar y ejecutar el programa, se generarán versión de lanzamiento del programa. Tenga en cuenta que para el objeto del archivo, la configuración por defecto de construcción es de lanzamiento.

En este punto, se corre el programa, el programa imprimirá la siguiente declaración:

Mi nombre es (null).

Esto demuestra que el código afirmación no se está ejecutando.

 

Copyright: Tomado de https://blog.csdn.net/sharkleegroup/article/details/16859263

Publicado 83 artículos originales · ganado elogios 12 · vistas 180 000 +

Supongo que te gusta

Origin blog.csdn.net/shengdaVolleyball/article/details/83898225
Recomendado
Clasificación