Pregunta

¿Cómo puedo configurar NSZombieEnabled y CFZombieLevel para mi ejecutable en Xcode 4?

¿Fue útil?

Solución

En Xcode 4.x pulse

R

(o haga clic en Menubar> Product> Scheme> Edit Scheme)

seleccione la ficha "Diagnóstico" y haga clic en "Activar zombi Objetos":

Haga clic en "Activar zombi Objetos"

Este vueltas liberados objetos en casos NSZombie que las advertencias de la consola de impresión cuando se utilizan de nuevo. Esta es una ayuda para la depuración de que el uso de memoria aumenta (sin objeto es realmente puesto en libertad), pero mejora el informe de errores.

Un caso típico es cuando se sobre-soltar un objeto y no se sabe cuál:

  • Con zombies: -[UITableView release]: message sent to deallocated instance
  • Sin zombies: EXC_BAD_ACCESS

Esta configuración Xcode se ignora cuando se archiva la solicitud de presentación App Store. No es necesario tocar nada antes de lanzar su aplicación.

Si se pulsa R es el mismo que seleccionar Producto> Ejecutar, manteniendo la tecla> presionado.
Al hacer clic en la opción "Habilitar zombi Objetos" casilla de verificación es lo mismo que añadir manualmente "NSZombieEnabled = SÍ" en la sección "Variables de entorno" de los argumentos de la ficha.

Otros consejos

La respuesta de Jano es la forma más fácil de encontrarlo .. Otra forma sería si hace clic en la barra de esquema desplegable -> esquema de editar -> pestaña argumentos y luego agrega NSZombieEnabled en la columna de las variables de entorno y SI en la columna de valor ...

Me parece esta alternativa más conveniente:

  1. Haga clic en la opción "Ejecutar botón desplegable"
  2. En la lista elegir Profile
  3. El programa "Instrumentos" debe abrir donde también se puede elegir Zombies
  4. Ahora usted puede interactuar con su aplicación y tratar de provocar el error
  5. Tan pronto como ocurre el error se debe obtener una pista sobre cuando su objeto fue puesto en libertad, por lo que cancela la asignación.

Zombies

Tan pronto como se detecta un zombi, a continuación, obtener una ordenada "zombi Pila" que aparecen cuando se asignó el objeto en cuestión y donde fue retenido o liberado:

Event Type    RefCt     Responsible Caller
Malloc            1     -[MyViewController loadData:]
Retain            2     -[MyDataManager initWithBaseURL:]
Release           1     -[MyDataManager initWithBaseURL:]
Release           0     -[MyViewController loadData:]
Zombie           -1     -[MyService prepareURLReuqest]

ventajas en comparación con el uso de la ficha de diagnóstico de los Esquemas Xcode :

  1. Si se olvida de desactivar la opción de la ficha de diagnóstico no haya objetos serán liberados de la memoria.

  2. Se obtiene una pila más detallada que muestra en qué métodos se asignó el objeto corruptos / o retenidos liberados.

En Xcode 4.2

  • Nombre del proyecto / Editar Esquema / Diagnóstico /
  • Habilitar zombi Objetos casilla de verificación
  • Ha terminado

encendido en Xcode 7

<

o seleccione Edit Scheme de Product> Menú Scheme

seleccione la pestaña forma Enable Zombie Objects Diagnostics

 Xcode 7 bandera zombi

Como alternativa, si lo prefiere archivos .xcconfig se puede leer este artículo https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/

Cacao ofrece una función interesante que mejora en gran medida sus capacidades para depurar este tipo de situaciones. Es una variable de entorno que se llama NSZombieEnabled, mira este vídeo que explica la creación de NSZombieEnabled en objetivo-C

En Xcode> 4.3:

Hace clic en la barra de esquema desplegable -> editar esquema -.> Pestaña argumentos y luego agrega NSZombieEnabled en la columna de las variables de entorno y SI en la columna de valor

Buena suerte !!!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top