NSString *myString = @"sample string";
NSString *newString = [myString copy];
Se si imposta un punto di interruzione dopo queste due righe, il puntatore per myString è uguale al puntatore per newString.Copia NSString non copia?
WTF? La copia NSString non dovrebbe restituire un puntatore a un nuovo oggetto? O mi manca qualcosa di fondamentale su come dovrebbe funzionare la copia?
Non so la risposta, ma se si cambia myString poi entrambi hanno indirizzo diverso ... fino a che il contenuto della stringa è lo stesso è nella stessa indirizzo ... –
Per prima cosa, in effetti non si chiamava copia, si chiamava stringWithString :. In secondo luogo, poiché le stringhe sono immutabili, il compilatore e il runtime apportano ottimizzazioni. Gli oggetti solitamente immutabili verranno restituiti con un numero di riferimento aggiuntivo anziché creare un nuovo oggetto effettivo. –
Bellezza del cacao - non fare copie di dati quando non richiesto ... – stefanB