2010-11-11 4 views

Antwort

27

[NSMutableDictionary dictionary] ist die gleiche wie [[[NSMutableDictionary alloc] init] autorelease]

+4

Dank. Für iPhone-Programmierung denke ich, dass [[NSMutableDictionary alloc] init] bevorzugt wird. –

+5

@Stephen: ??? Warum denkst du so? Sicher, in vielen Fällen werden Sie wahrscheinlich besser loslassen, sobald Sie mit ihnen fertig sind, aber Sie können auch einen Autorelease-Pool nach jeweils n Zyklen in einer engen Schleife beenden, um auch die Speichernutzung zu verwalten. Wie Sie jedoch sagten, ist Ihr Kommentar zu allgemein, um wahr zu sein. –

6

Der Unterschied ist, dass, wenn Sie NSMutableDictionary* myDictionary = [[NSMutableDictionary alloc] init] verwenden Sie später [myDictionary release] muss anrufen, wenn Sie mit ihm fertig sind. Andernfalls werden Sie Speicher verlieren. Wenn Sie die andere Methode verwenden, müssen Sie sich nicht um die Speicherverwaltung kümmern.

+1

Sie müssen sich immer noch Gedanken über die Speicherverwaltung mit automatisch freigegebenen Instanzen machen. Betrachten wir z.B. Erstellen vieler Arrays in einer engen Schleife, ohne den entsprechenden Autorelease-Pool zu leeren. –

4

aus Gründen der Vollständigkeit, einige Jahren später haben wir anderen kürzeren Weg zum alloc Wörterbuch:

NSMutableDictionary* dictionary = @{}.mutableCopy; 
Verwandte Themen