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.