¿Cómo puedo configurar NSZombieEnabled en Xcode 4?
-
25-09-2019 - |
Pregunta
¿Cómo puedo configurar NSZombieEnabled
y CFZombieLevel
para mi ejecutable en Xcode 4?
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":
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:
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:
- Haga clic en la opción "Ejecutar botón desplegable"
- En la lista elegir
Profile
- El programa "Instrumentos" debe abrir donde también se puede elegir
Zombies
- Ahora usted puede interactuar con su aplicación y tratar de provocar el error
- 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.
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 :
-
Si se olvida de desactivar la opción de la ficha de diagnóstico no haya objetos serán liberados de la memoria.
-
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
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/
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 !!!