Ho 2 nuove domande:Sono NSStrings memorizzati sul mucchio o sullo stack e quello che è un buon modo per inizializzare un
1) considerano questa linea:
NSString *myString = [[NSString alloc] initWithString: @"Value"];
C'erano due cose che ho imparato, ma vorrei conferma: Come ho appreso, il messaggio "alloc" indica che l'istanza di NSString sarà memorizzata nella memoria "heap". Ho capito anche che le variabili primitive come "char" sono memorizzate nella memoria "stack".
Questo significa che:
- l'istanza di NSString viene memorizzato nella memoria heap;
- E che questo oggetto ha un puntatore iVar (quando è stato chiamato il metodo initWithString) alla stringa "Valore" di "caratteri" primitivi, che risiedono nella memoria dello stack? Come funziona in realtà?
La seconda domanda è direttamente correlata e causa per me un dilemma personale (probabilmente perché mi manca un punto): 2) Quale dei due approcci vuoi consultare e perché ?:
NSString *myString = [[NSString alloc] initWithString: @"Value"];
NSString *myString = @"Value";
Se la mia prima domanda è confermata, entrambi gli approcci dovrebbero "alla fine" puntare ai caratteri che sono memorizzati nella memoria dello stack. Pertanto, in realtà non vedo lo scopo di utilizzare la prima opzione e di essere infastidito dal conteggio dei ritiri.