Mittel Loslassen Loslassen, dass sofort. Autoreleasing bedeutet, dass die Variable im nächsten Autorelease-Pool freigegeben werden soll.
Sie verwenden die automatische Freigabe, wenn Sie die Variable beibehalten, aber kein Speicherleck erstellen möchten. Sie verwenden Release, wenn Sie die Variable nicht mehr benötigen.
Probe:
- (NSNumber *)return5 {
NSNumber * result = [[NSNumber alloc]initWitnInt: 5];
[result autorelease];
return result;
}
Warum verwenden wir Autofreigabe da?
Wenn wir stattdessen [result release] verwenden, wird das variable Ergebnis zu diesem Zeitpunkt zerstört. Das bedeutet, dass der zurückgegebene Wert unbrauchbar ist.
Wenn wir überhaupt nicht freigeben, wird die Variable result
für FOREVER gehalten werden Speicherverlust.
Wir können jedem Anrufer die Funktion mitteilen, das Ergebnis freizugeben, aber das wäre ein Kopfzerbrechen und fehleranfällig.
So verwenden wir Autorelease. Wir markieren die Variable, die im nächsten Autorelease-Pool freigegeben werden soll. Grundsätzlich markieren wir die Variable, die in der Nähe des Alloc freigegeben werden soll. Daher wird das Mantra-Alloc mit der Freigabe in der gleichen Funktion gepaart, die die ganze Zeit hält.
Eigentlich werden Sie alle Freigabe in AutoRelease ändern. Ihr Speicherverbrauch ist nicht effizient, jedoch ist der Effekt minimal. Alle Variablen sind in jeder Programmiersprache effektiv freigegeben.
Wie auch immer, verwenden Sie ARC.
Der Link zum Speicherverwaltungsprogramm scheint unterbrochen zu sein; Die iOS-Version finden Sie jetzt unter https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html – CCJ