456 votos

¿Cómo configuro NSZombieEnabled en Xcode 4?

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

753voto

Jano Puntos 37593

En Xcode 4.x de prensa

R

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

seleccione el "Diagnóstico" de la ficha y haga clic en "Habilitar Zombi Objetos":

Click "Enable Zombie Objects"

Esto se convierte en libertad de los objetos en NSZombie instancias que la impresión de la consola de advertencias cuando se utiliza de nuevo. Esta es una ayuda de la depuración que aumenta el uso de memoria (no objeto es realmente liberado), pero mejora el informe de errores.

Un caso típico es cuando se sobre-la liberación de un objeto y no sabe que uno:

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

Este Xcode configuración se omite cuando archivo de la aplicación para la App Store de presentación. No es necesario tocar nada antes de la liberación de su aplicación.

Pulsando ⌥⌘R es igual a la selección de Producto > Ejecutar mientras se mantiene presionada la tecla Alt.
Hacer clic en "Habilitar Zombi Objetos" es la misma que la adición manual de los "NSZombieEnabled = YES" en la sección "Variables de Entorno" de la ficha Argumentos.

70voto

learner2010 Puntos 1916

Respuesta de Jano es la forma más fácil de encontrar... otra forma sería si hace clic en el esquema desplegable barra-> esquema de editar-> ficha de argumentos y agregue NSZombieEnabled en la columna de Variables de entorno y sí en la columna valor...

57voto

Besi Puntos 9452

Esto me parece la alternativa más conveniente:

  1. Haga clic en el "Ejecutar Botón Desplegable"
  2. En la lista elija Profile
  3. El programa de "Instrumentos" se debe abrir, donde también se puede optar Zombies
  4. Ahora puedes interactuar con la aplicación y tratar de causar el error
  5. Tan pronto como el error sucede, usted debe obtener una pista sobre cuando el objeto fue puesto en libertad y, por tanto, se cancela la asignación.

Zombies

Tan pronto como un zombie se detecta que, a continuación, obtener una casa "Zombie Pila" que se muestra cuando el objeto en cuestión fue asignado y donde fue retenido o de lanzamiento:

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 la Xcode Esquemas:

  1. Si usted se olvide de desactivar la opción en el diagnóstico de la ficha de que no hay objetos se libera de la memoria.

  2. De obtener una más detallada de la pila que se muestra en lo que los métodos de su corrupto objeto fue asignado / publicado o retenido.

5voto

pratap shaik Puntos 105

En Xcode 4.2

  • Nombre/editar esquema/diagnóstico del proyecto /
  • Casilla de verificación objetos Zombie
  • Ya está

1voto

user2554822 Puntos 92

Cacao ofrece una característica interesante que mejora en gran medida su capacidad para depurar tales situaciones. Es una variable de entorno que se llama NSZombieEnabled, mira este video que explica la configuración de NSZombieEnabled en objective-C

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X