Domanda

Domanda Noob:

Al momento ho l'impressione che quando vuoi creare un oggetto, devi allocare e init quell'oggetto.

Tuttavia, ho visto diversi codici di esempio in cui viene dichiarato un oggetto NSString , ma non vedo alcun messaggio alloc o init che segue ...

Un esempio molto semplice:

NSString *myString = @"Hello World";

NSLog(@"%@" , myString);

Qualcuno può spiegare perché è così?

È stato utile?

Soluzione

Dichiarazione una variabile non richiede il rilascio di memoria.

Gli oggetti

?? Istantanea fanno. E puoi creare un'istanza di un nuovo oggetto solo se chiami alloc o copia

Nel tuo esempio, stai impostando il tuo riferimento all'oggetto già esistente che il compilatore crea dalla stringa codificata. E non è necessario gestirne la memoria perché non è stata creata un'istanza.

Non so se lo sto spiegando abbastanza chiaramente.

Modifica

Sembra che ci sia già una domanda che risponde a questa:

È un NSString letterale rilasciato automaticamente o deve essere rilasciato?

Altri suggerimenti

Quando si inserisce un NSString letterale nel codice, come @ " hello, world ', il compilatore alloca spazio per esso nel file eseguibile e viene caricato in memoria e inizializzato all'avvio del programma.

Poiché fa parte del tuo eseguibile, vive per l'intera durata della tua app. Non è necessario conservarlo o rilasciarlo. La variabile NSString * myString che crei è un puntatore al punto in memoria in cui il compilatore ha letteralmente NSString .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top