¿Qué recoge exactamente el recolector de basura Objective-C? Por ejemplo, si estoy escribiendo un programa en Objective-C 2.0 y uso algunas estructuras simples de C, ¿necesita mi código preocuparse por liberar manualmente esa memoria?¿Obtiene la recolección de basura Objective-C 2.0 estructuras C?
Respuesta
Para la memoria del montón, está solo por defecto. A menos que asigne la memoria del montón con NSAllocateCollectable
o NSReallocateCollectable
, o entregue explícitamente un objeto CoreFoundation al recolector de basura a través de una API como NSMakeCollectable
, el GC no tiene idea de su memoria y no la administrará por usted. Por el contrario, cuando GC está habilitado, los objetos Objective-C creados con +alloc
/-init
son gestionados por GC a menos que explícitamente se indique lo contrario con una llamada API complementaria.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/GarbageCollection/
Si utiliza malloc()
para asignar una estructura en el montón, entonces yo realmente duda de que (la página del manual no menciona nada al respecto, pero es posible que Apple volvió a escribir malloc
para el tiempo de ejecución ObjC2). Si usa NSAllocateCollectable()
, entonces sí.
Si la estructura se creó en la pila, no hay necesidad de recopilación, ya que se destruirá tan pronto como se cierre el marco.
+1 Para mencionar lo que sucede a estructuras asignado en la pila. –
- 1. Supresión de la recolección de basura C#
- 2. Uso de la recolección de basura?
- 3. C# Recolección de basura Active Roots
- 4. Recolección de basura
- 5. recolección de basura en C++ 11
- 6. y recolección de basura
- 7. ¿Deberíamos utilizar la recolección de basura "estación de trabajo" o la recolección de basura "servidor"?
- 8. recolección de basura de java
- 9. Retraso de recolección de basura?
- 10. ¿Notificación de recolección de basura?
- 11. ¿La recolección de basura es automática en C++ estándar?
- 12. Mejores prácticas para forzar la recolección de basura en C#
- 13. JVM sin recolección de basura
- 14. multiprocesamiento y recolección de basura
- 15. ¿NewLISP usa la recolección de basura?
- 16. referencia interna impide la recolección de basura
- 17. Cómo depurar la Recolección de basura .net?
- 18. ¿WinRT tiene recolección de basura?
- 19. Recolección de basura en Delphi
- 20. C# BinaryReader.Read() obtiene basura para comenzar con
- 21. .Net 2.0 servicio de Windows se bloquea durante la recolección de basura
- 22. Recolección de basura en una variable local
- 23. ¿Cómo mejorar el rendimiento de la recolección de basura?
- 24. Recolección de basura con Extensión de Ruby C
- 25. ¿La recolección de basura alguna vez afecta la pila?
- 26. Recolección de basura vs. punteros compartidos
- 27. objetos propiedad del mismo en Objective-C Recolección de Basura
- 28. Recolección de basura del objeto C# declarado en el constructor
- 29. Enlaces Lua a C++ y recolección de basura
- 30. Lua: la recolección de basura + datos de usuario
+1 La Guía de programación de recolección de basura es una de las piezas técnicas más fascinantes que jamás haya leído. –
NSAllocateCollectable es exactamente lo que estaba buscando, ¡gracias! –