En muchos libros y en muchos sitios, veo -drain. Bueno, para un Pool Autorelease que suena bien. Pero, ¿hace algo más que un lanzamiento? Supongo -dibujo solo hace que el Pool -release todos sus objetos, sin liberar el Pool en sí mismo. Solo una suposición.¿Cuál es la diferencia entre enviar -release o -drain a un grupo Autorelease?
Respuesta
Tenga en cuenta que los comentarios sobre la respuesta de oxigen diciendo que -drain no libera NSAutoreleasePool no son correctos. El documentation for NSAutoreleasePool dice claramente que -drain libera (y así destruye) el NSAutoreleasePool.
-drain reemplaza el uso de los objetos de liberación de NSAutorelease, la única diferencia es que proporciona una pista para el sistema de recolección de basura.
Si el sistema dispone de una colección de basura, a continuación, enviar el mensaje -Vaciado (objc_collect_if_needed) para GC
Si no lo ha GC, escurrir = liberar
por lo que un disco también liberaría el grupo en sí, ¿no? – Thanks
-los métodos de retención y -difusión no cambian el objeto retainCount of NSAutoreleasePool Sólo envían un mensaje de versión a todos los objetos en el grupo No sé cómo y cuándo los objetos NSAutorelease están destruyendo ((( – oxigen
) No, drain libera el No hay ninguna magia cuando se trata de autorreleases y retiene conteos, ellos siguen las mismas reglas que cualquier otro objeto, excepto que no pueden ser retenidos o lanzados automáticamente (lo cual no tendría mucho sentido de todos modos) –
Oxigen es correcto, consulte la documentación para el método drain
NSAutoreleasePool de:
En un entorno de referencia contado, comunicados y pops el receptor; en un entorno recogido de basura , desencadena la recolección de elementos no utilizados si la memoria asignada desde la última colección es mayor que el umbral actual.
- 1. Autorelease vs. Release
- 2. ¿Cuál es la diferencia entre InterlockedCompareExchange Release() y Acquire()?
- 3. ¿Cuáles son las diferencias entre free, dealloc, release y autorelease?
- 4. Autorelease frente a liberar
- 5. ¿Cuál es la diferencia entre compilation debug = "false" y Release mode?
- 6. ¿Cuál es la diferencia entre los modos Release y Debug en Visual Studio?
- 7. ¿Cuál es la diferencia entre '\ n' o "\ n" en C++?
- 8. ¿Cuál es la diferencia clave entre una compilación 'Debug' y 'Release' en .NET?
- 9. ¿Cuál es la diferencia entre usar el grupo de subprocesos y un subproceso normal?
- 10. Diferencia entre grupo y clúster
- 11. ¿Cuál es la principal diferencia entre Convert.ChangeType o Convert.ToInt32?
- 12. ¿Cuál es la diferencia entre XAMPP o WAMP Server & IIS?
- 13. ¿Cuál es la diferencia entre enviar y ejecutar el método con ThreadPoolExecutor
- 14. ¿Cuál es la diferencia entre un árbol y un directorio?
- 15. ¿Cuál es la diferencia entre SynchronizationContext.Send y SynchronizationContext.Post?
- 16. ¿Cuál es la diferencia entre un predicado y un funcionador?
- 17. ¿Cuál es la diferencia entre un algoritmo y un método
- 18. Diferencia de dependencia entre Release & Debug
- 19. ¿Cuál es la diferencia entre dict() y {}?
- 20. ¿Cuál es la diferencia entre a [:] = b y a = b [:]
- 21. ¿Cuál es la diferencia entre $ a y $$ a en php?
- 22. ¿Cuál es la diferencia entre un grupo y una coincidencia en el RegEx de .NET?
- 23. ¿Cuál es la diferencia entre el
- 24. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 25. ¿Cuál es la diferencia entre un lenguaje y un marco?
- 26. ¿Cuál es la diferencia entre "Retroceder ..." y "Volver a enviar Changelist enviado #####" en Perforce P4V
- 27. Autorelease or Not Autorelease
- 28. ¿Cuál es la diferencia entre un controlador y un servicio?
- 29. ¿Cuál es el equivalente a '[[retener algo] autorelease]' en ARC?
- 30. ¿Cuál es la diferencia entre ".equals" y "=="?
Gracias. Entonces, en iPhone OS, es mejor usar "liberar" en lugar de "liberar". – Thanks
En un entorno que no es de GC, son lo mismo. Excepto en el raro caso en que no desee proporcionar una pista al sistema GC por algún motivo si el código alguna vez se usó en el modo GC, no hay razón para usar la versión en lugar de drenar en la segmentación de código 10.4+. – smorgan
Apple usa -release para el ARP en la función main() ... – Thanks