Gesti贸n de memoria: ARC vs MRC en iOS

驴C贸mo funciona el contador autom谩tico de referencias en iOS? De hecho, este tema me result贸 m谩s f谩cil de entender despu茅s de familiarizarme con el contador de referencia manual. Este es un art铆culo muy simple que lo ayudar谩 a obtener una comprensi贸n b谩sica de c贸mo funciona la administraci贸n de memoria en iOS.





Hay varias herramientas para la gesti贸n de la memoria en iOS:





MRC - Contador de referencia manual

MRC es la gesti贸n manual de enlaces mediante c贸digo. En los primeros d铆as y en la prehistoria, los propios desarrolladores gestionaban el recuento de referencias a trav茅s de equipos. Fue, por decirlo suavemente, dif铆cil:





  • alloc: crear un objeto (crear un enlace)





  • retener - referencia a 茅l (+1 al enlace)





  • liberaci贸n: disminuye el recuento de referencias (-1)





  • dealloc - si el recuento de referencias es 0 = descargar de la memoria





B谩sicamente, asigna un objeto, lo guarda en alg煤n momento y luego env铆a una versi贸n para cada asignaci贸n / guardado que env铆a. El m茅todo dealloc se llama en un objeto cuando se elimina de la memoria.





Problemas:





  • Necesita contar constantemente retener, liberar





  • falla al acceder desde la memoria descargada





  • olvid茅 poner el comunicado - fuga de memoria





ARC - Contador de referencia autom谩tico

, , , - iOS . . ARC . . , ARC , .









?





  • (release/retain - ) dealloc -





  • properties change - weak/strong









property :





  • strong - retain





  • weak - assign.





, ARC:





  • El ciclo de retenci贸n es cuando la cantidad de espacio asignado en la memoria no se puede recuperar debido a los ciclos de ahorro. Debido a que Swift usa el conteo autom谩tico de referencias (ARC), se produce un bucle de guardado cuando dos o m谩s objetos contienen fuertes referencias entre s铆. Como resultado, estos objetos se mantienen unos a otros en la memoria, porque su recuento de guardado nunca disminuir谩 a 0, lo que evitar谩 que se llame a la funci贸n deinit y se libere memoria.





La soluci贸n es trivial: debilitar uno de los enlaces.









Este art铆culo es m谩s b谩sico e introductorio a los conceptos b谩sicos de la administraci贸n de memoria en iOS, para una f谩cil comprensi贸n conceptual.








All Articles