Instruments me informa una fuga de una variable NSDate. Pero si agrego los datos retenidos y las publicaciones, creo que debería poder publicarlos en el grupo de autorrelease. Probablemente estoy contando mal, pero quiero asegurarme. Eche un vistazo al RefCt. Si I [Class alloc] debería aparecer un conteo retenido de 1, entonces, si liberara automáticamente ese objeto, debería poder liberarlo, ¿o no?Fuga en instrumentos, recuento de referencias y Autorelease
Respuesta
Instrumentos suma los retiene y libera para usted. Eso es lo que le muestra la columna "RefCt": El total acumulado.
Si [alloc Clase] se debería llegar a una cuenta de retención de 1, ...
Y de hecho lo hace; esa es la primera fila en la lista.
... luego, si libero ese objeto, debería poder liberarlo, ¿o no?
Autorelease no es un -1 inmediato; causa un lanzamiento posterior, y que es el -1.
Por lo que tiene:
- Asignación: +1 (= 1)
- Autorelease: 0 por ahora; provoca una liberación más tarde (sin cambio ahora, para todavía = 1)
- Permanencia: +1 (= 2)
- de salida: -1 (= 1)
- Permanencia: +1 (= 2)
- retener: +1 (= 3)
- de salida: -1 (= 2)
- de salida: -1 (= 1)
Tenga en cuenta que una de las tres publicaciones es la causada por la Autorelease . Solo entonces se incurre en -1.
El objeto necesita otra versión para ser desasignado. Hasta que eso suceda, no lo hará.
Y sí, es posible que un objeto que tenga suficientes autorreleases sobresalientes lo mate cuando se retengan antes de que eso suceda y por lo tanto se mantendrá con vida. Vi que esto ocurría una vez con un objeto que estaba reteniendo poco, pero ese era el valor de una propiedad utilizada por un enlace; el Encuadernador conservó el valor y así lo mantuvo con vida incluso después de haber lanzado automáticamente mi última propiedad de él.
- 1. Instrumentos muestran fuga en main.m (Xcode 4.3.1)
- 2. Recuento de referencias en C++
- 3. Cadenas de Delphi y recuento de referencias
- 4. NSInvocación y ARC (recuento automático de referencias)
- 5. Objetivo c: recuento de referencias
- 6. Autorelease or Not Autorelease
- 7. Punteros inteligentes y recuento de referencias en Java
- 8. ¿Cómo funciona el recuento de referencias de un puntero inteligente de recuento de referencias?
- 9. Recuento de referencias para los objetos
- 10. ¿IUnknown :: QueryInterface() incrementa el recuento de referencias?
- 11. Autorelease scope
- 12. ¿en qué consiste exactamente el recuento de referencias en C++ ?,
- 13. NSThreads en el recuento automático de referencias (ARC)
- 14. Descripción del recuento de referencias de la variable de clase
- 15. Cómo deshabilitar el recuento automático de referencias de Xcode4.2
- 16. ¿Cómo activar/desactivar el "Recuento automático de referencias"?
- 17. Deshabilitar el recuento automático de referencias para algunos archivos
- 18. Autorelease vs. Release
- 19. ¿Por qué Python utiliza el recuento de referencias y el marcado y barrido para gc?
- 20. Autorelease frente a liberar
- 21. ThreadLocal <> y fuga de memoria
- 22. ¿Por qué Python mantiene un recuento de referencias en falso y verdadero?
- 23. ¿Qué tipo de fugas evita o minimiza el recuento automático de referencias en Objective-C?
- 24. Semantics de movimiento y referencias de referencias
- 25. ¿Por qué utilizar Autorelease pool?
- 26. Objective-C autorelease memory management
- 27. Fuga de memoria en el teclado descartar
- 28. iPhone: OpenAL y AudioToolbox fuga
- 29. Comprensión de los instrumentos en Xcode, prueba de fugas
- 30. recuento filtrada y el recuento total y sin subconsulta