Instrumentos Asignaciones asignación de ruta y desocupación de objects de classs definidas por el usuario

¿Es posible rastrear la asignación y la desasignación de mis objects Objective-C? Por ejemplo, si tengo un Libro de class, quiero rastrear todas las asignaciones y desasignaciones de los objects del tipo Libro. Puedo rastrear todas las classs SKD pnetworkingeterminadas, como UIViewController, UIWindow, UIView, NSDictionary y todo eso, pero también quiero rastrear los objects creados a partir de mis classs definidas.

Puede usar el instrumento Asignaciones para rastrear el ciclo de vida de sus objects. Si usa la plantilla "Asignaciones", está configurada para grabar events malloc y free . Es posible que desee configurarlo para registrar también los events de retain , release y autorelease activando la checkbox "Registrar recuentos de reference" en la configuration del instrumento Asignaciones:

registro de cuenta de recuentos de referencia

(No puede alternar esto mientras Instruments está grabando, que comienza por defecto tan pronto como elija su plantilla).

Actualización para Xcode 9: Apple ha hecho más difícil encontrar esta configuration. Ahora debe seleccionar el instrumento de Asignaciones, luego en la barra de menu elija Archivo> Opciones de grabación.

Después de su ejecución, puede encontrar sus objects utilizando la vista Asignaciones> Estadísticas> Resumen de objects, que es la configuration pnetworkingeterminada para el panel Detalle (la mitad inferior de la window):

Configuración de resumen de objetos para el panel de detalles

Si desea ver los objects que se habían desasignado antes de detener la ejecución, debe cambiar la configuration de Vida útil de la asignación de "Creado y aún vivo" (el valor pnetworkingeterminado) a "Todos los objects creados":

Vida útil de asignación

Para encontrar objects de una class específica, comience escribiendo el nombre de la class en el campo Buscar en el extremo derecho de la barra de herramientas de la window. A continuación, busque el nombre de la class en la columna Categoría de la vista de list, pase el mouse sobre ella y click la flecha que aparece junto a ella. Por ejemplo, mi aplicación tiene una class llamada Tile , así que busco eso y luego hago clic en la flecha al lado de Tile en la vista de list:

buscando

Ahora, la vista de list muestra cada instancia de Tile . (Tenga en count que debe ingresar la class real del object, no una superclass. Al ingresar a NSObject solo se encuentran los objects creados por [NSObject alloc] , no los objects que fueron creados por [Tile alloc] ). Puedo ver el historial para cualquier instancia particular haciendo clic en la flecha al lado de la dirección de esa instancia:

Obteniendo detalles

En la vista de detalle de un object, puedo ver el malloc y free events free y, dado que encendí "Grabar los recuentos de reference", también puedo ver los posts de retain , release y autorelease y su efecto en el recuento de retención del object. Si quiero ver la stack de llamadas para cualquiera de esos events, puedo abrir el panel de detalles ampliado en el lado derecho de la window:

detalle extendido de la pila de llamadas