2010-11-11 6 views

risposta

27

[NSMutableDictionary dictionary] è lo stesso di [[[NSMutableDictionary alloc] init] autorelease]

+4

Grazie. Per la programmazione iPhone, penso che [[NSMutableDictionary alloc] init] sia preferito. –

+5

@Stephen: ??? Perché la pensi in questo modo? Sicuramente, in molti casi, sarà probabilmente meglio liberare le cose subito dopo averle finite, ma puoi anche eliminare un pool di autorelease dopo ogni n cicli in un circuito chiuso per gestire anche l'utilizzo della memoria. Come hai affermato, tuttavia, il tuo commento è troppo generale per essere vero. –

6

La differenza è che se si utilizza NSMutableDictionary* myDictionary = [[NSMutableDictionary alloc] init] si dovrà chiamare in seguito [myDictionary release] quando hai finito con esso. Altrimenti perderai memoria. Se si utilizza l'altro metodo, non è necessario preoccuparsi della gestione della memoria.

+1

Devi ancora preoccuparti della gestione della memoria con istanze autorelitte. Si consideri ad es. creare molti array in un circuito chiuso senza drenare il pool di autorelease corrispondente. –

4

per ragioni di completezza, alcuni anni più tardi abbiamo ottenuto altro modo più breve dizionario alloc:

NSMutableDictionary* dictionary = @{}.mutableCopy; 
Problemi correlati