¿Alguien puede explicar las diferencias entre free()
, release
, autorelease
y dealloc
?¿Cuáles son las diferencias entre free, dealloc, release y autorelease?
Respuesta
De los 4 métodos que ha mencionado, normalmente solo usará release
y autorelease
en Object-C. free
se puede usar cuando haya usado c y malloc
; de lo contrario, debe usar release
y autorelease
.
dealloc
no debe ser llamado por ninguno de sus códigos, ya que puede interferir con el ciclo de retención/liberación que Object-C utiliza para realizar un seguimiento de los recursos. El uso de dealloc
casi con seguridad provocará fallas en el tiempo de ejecución si alguna vez lo usa.
El último recurso del uso de la release
y autorelease
es el Apple memory management documentation
free
es lo contrario demalloc
y se usa en C. Es probable que no vamos a usar mucho la programación en Objective C- Si posee un objeto,
release
cuando haya terminado con él - También puede
autorelease
un objeto. Esto lo libera automáticamente al final de la iteración del ciclo de ejecución actual - Cuando el recuento de referencias en un objeto cae a cero, el tiempo de ejecución llama al
dealloc
. No se debe llamar a este método usted mismo
usted "propia" de un objeto si alloc
, new
, retain
o copy
ella.
Apple proporciona some good documentation en esto.
free()
es una función C que utiliza para deshacerse de la memoria que ya no necesita, obtenida a través de malloc()
u otra función que está documentada para requerir free() para desasignar su memoria, p. strdup()
.
-dealloc
es un selector Objective-C enviado por Objective-C runtime a un objeto cuando el objeto ya no es propiedad de ninguna parte de la aplicación.
-release
es el selector que se envía a un objeto para indicar que se está renunciando a la propiedad de ese objeto. Una vez que un objeto no es propiedad de nadie, se envía el mensaje -dealloc
por el tiempo de ejecución.
-autorelease
es un selector que se envía a un objeto para indicar que se está renunciando a la propiedad del objeto. Sin embargo, si ahora nadie posee el objeto, se aplazará el -dealloc
final hasta algún punto posterior no especificado. De hecho, lo que realmente está haciendo es transferir su propiedad a un grupo de liberación automática que luego la liberará cuando se libere (o agote).
Nunca debe enviar -dealloc
a un objeto excepto a super
en el propio método -dealloc
del objeto.
- 1. ¿Cuáles son las diferencias entre $ {} y # {}?
- 2. ¿Cuáles son las diferencias y similitudes entre MVC y MVVM?
- 3. Release, Dealloc y Self Reference
- 4. ¿Cuáles son las diferencias entre PHP y Java?
- 5. ¿Cuáles son las diferencias entre osql, isql y sqlcmd?
- 6. ¿Cuáles son las diferencias entre "=" y "<-" en R?
- 7. ¿Cuáles son las diferencias entre Flash Professional y Flash Builder?
- 8. ¿Cuáles son las diferencias entre LLVM y bytecode java?
- 9. ¿Cuáles son las diferencias entre usar `rails server` y` rackup`?
- 10. ¿Cuáles son las diferencias entre RedrawWindow y UpdateWindow en Win32?
- 11. ¿cuáles son las diferencias exactas entre jsch ChannelExec y ChannelShell?
- 12. ¿Cuáles son las diferencias entre JSP y Facelets?
- 13. ¿Cuáles son las diferencias entre ConcurrentQueue y BlockingCollection en .Net?
- 14. ¿Cuáles son las diferencias entre LinFu.DynamicProxy y Castle.DynamicProxy?
- 15. ¿Cuáles son las diferencias fundamentales entre OSGi y Java EE?
- 16. ¿Cuáles son las diferencias entre TFS, SVN y GIT?
- 17. ¿Cuáles son las principales diferencias entre EnhancedPatternLayout y PatternLayout?
- 18. ¿Cuáles son las diferencias entre INSERT y UPDATE en MySQL?
- 19. ¿Cuáles son las diferencias entre NSURLConnection y ASI-HTTP-Request?
- 20. ¿Cuáles son las principales diferencias entre fwrite y write?
- 21. ¿Cuáles son las diferencias entre JSP, PHP, HTML5 y javascript?
- 22. ¿Cuáles son las diferencias prácticas entre formularios especiales y macros?
- 23. ¿Cuáles son las diferencias entre los modelos CSS y Latex?
- 24. ¿Cuáles son las diferencias entre MOQ y AutoFixture?
- 25. ¿Cuáles son las diferencias entre Vanilla Perl y Strawberry Perl?
- 26. ¿Cuáles son las diferencias entre el objeto JSON y JavaScript?
- 27. ¿Cuáles son las diferencias reales entre Zend Framework y Django?
- 28. ¿Cuáles son las diferencias actuales entre jQuery y Prototype?
- 29. ¿Cuáles son las diferencias entre la lechuga y la pictografía?
- 30. ¿Cuáles son las diferencias entre PEG y CFG?
Punto 3: Lo llamaría "iteración de ciclo de ejecución" en lugar de "ciclo de ejecución". Punto 4: Ciertamente, quisiste decir "dealloc" en lugar de "liberar", ¿no? (lo siento, nitpicking) – Dirk
Muchas gracias. Eso fue definitivamente útil. – ar106
@Dirk Buen lugar. Fijo. –