Speicherverwaltung: ARC vs MRC in iOS

Wie funktioniert der automatische Referenzzähler in iOS? Tatsächlich war dieses Thema fßr mich leichter zu verstehen, nachdem ich den manuellen Referenzzähler kennengelernt hatte. Dies ist ein sehr einfacher Artikel, der Ihnen hilft, ein grundlegendes Verständnis der Funktionsweise der Speicherverwaltung in iOS zu erlangen.





Es gibt verschiedene Tools fĂźr die Speicherverwaltung in iOS:





MRC - Manueller Referenzzähler

MRC ist die manuelle Linkverwaltung ßber Code. In den frßhen Tagen und in prähistorischen Zeiten verwalteten die Entwickler selbst die Referenzzählung durch Teams. Es war, gelinde gesagt, hart:





  • zuweisen - Erstellen eines Objekts (Erstellen eines Links)





  • behalten - Verweis darauf (+1 zum Link)





  • release - Dekrementiere den Referenzzähler (-1)





  • Dealloc - Wenn der Referenzzähler 0 ist = Entladen aus dem Speicher





Grundsätzlich ordnen Sie ein Objekt zu, speichern es irgendwann und senden dann eine Freigabe fßr jede von Ihnen gesendete Zuordnung / Speicherung. Die Dealloc-Methode wird fßr ein Objekt aufgerufen, wenn es aus dem Speicher entfernt wird.





Probleme:





  • Sie mĂźssen ständig zählen, behalten, freigeben





  • Absturz beim Zugriff aus dem entladenen Speicher





  • habe vergessen, die Freigabe zu setzen - Speicherverlust





ARC - Automatischer Referenzzähler

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









?





  • (release/retain - ) dealloc -





  • properties change - weak/strong









property :





  • strong - retain





  • weak - assign.





, ARC:





  • Speicherzyklus ist, wenn die Menge des zugewiesenen Speicherplatzes im Speicher aufgrund von Speicherzyklen nicht zurĂźckgefordert werden kann. Da Swift die automatische Referenzzählung (ARC) verwendet, tritt eine Sicherungsschleife auf, wenn zwei oder mehr Objekte starke Verweise aufeinander enthalten. Infolgedessen behalten sich diese Objekte gegenseitig im Speicher, da ihr Speicherzähler niemals auf 0 abfällt, wodurch verhindert wird, dass die Deinit-Funktion aufgerufen wird und Speicher freigegeben wird.





Die LĂśsung ist trivial - eines der Glieder schwach zu machen.









Dieser Artikel ist grundlegender und fßhrt in die Grundlagen der Speicherverwaltung in iOS ein, um ein einfaches konzeptionelles Verständnis zu ermÜglichen.








All Articles