Puoi inizializzare un array con un array che potrebbe essere stato autorizzato?
-
27-10-2019 - |
Domanda
Sto cercando di capire un problema di indice fuori vincolo che sto entrando nel mio newArray
oggetto. Passo oldArray
al metodo e quindi utilizzare quanto segue:
newArray = [[NSMutableArray alloc] initWithArray:oldArray];
Se oldArray
è stato rilasciato, riceverei un errore su questa riga o otterrei un'eccezione fuori limite quando provo ad accedere newArray
?
Soluzione
No, il codice sopra fa una copia di oldArray
in newArray
. Mutevole oldArray
in alcun modo (incluso il rilascio) non avrà alcun impatto su newArray
, e in ogni caso non causerebbe certamente un'eccezione dei limiti.
La causa più probabile è quella oldArray
è nil
A questo punto, così newArray
è un array vuoto quando non ti aspetti che sia. Alternativamente, oldArray
Potrebbe non avere tanti elementi che pensi che lo faccia. Eccezione dei limiti significa che stai leggendo oltre la fine dell'array. Non ha nulla a che fare con la gestione della memoria.