Unter ARC, wie kann ich die Elemente in einem NSArray freigeben?

7

Unter der manuellen Objective-C-Standardspeicherverwaltung wurde in diese Frage vorgeschlagen, dass der Weg zur Freigabe eines NSArray initialisiert wird mit

%Vor%

sollte

verwendet werden %Vor%

Wenn wir -release bei der automatischen Referenzzählung nicht mehr verwenden können, was wäre der empfohlene Weg, dieses NSArray unter ARC zu veröffentlichen?

    
Lucas 26.08.2011, 13:23
quelle

2 Antworten

12

Wenn das imageArray ein Ivar für ein Objekt ist (vielleicht keine sichere Annahme), sollten Sie einen Accessor verwenden, um das Array auf null zu setzen; Der Accessor kümmert sich um die Freigabe des Arrays und aller seiner Member:

[self setImageArray:nil];

Wenn Sie ein Array mit vielen Membern bereinigen müssen, aber ein gültiges Array in diesem Bereich bereithalten müssen, damit andere Methoden es sicher senden können, können Sie Folgendes verwenden:

[self setImageArray:[[NSArray alloc] init]];

Dies ersetzt das alte Array durch ein neues, leeres Array.

    
matthias 26.08.2011, 16:57
quelle
19

Um ARC zu verwenden, entfernen Sie einfach Ihre retain und release Nachrichten und das war's. So werden Sie Ihr Array wie folgt los:

%Vor%

Das funktioniert und leckt nicht, weil der Compiler unter ARC automatisch die notwendigen Aufrufe retain und release einfügt.

    
Sven 26.08.2011 18:15
quelle