2013-03-05 19 views
6

Comportamento strano in NSMutableArray.NSMutableArray removeObjectAtIndex strano problema.

Ho creato l'oggetto e lo ho riempito.

NSMutableArray *array = [[NSMutableArray alloc] 
         initWithObjects:@"1",@"2",@"3",@"4", nil]; 
[array removeObjectAtIndex:0]; 

Prima di rimuovere il suo aspetto:

array NSMutableArray * 0x1040b5e0 
[0] id 0x00088a44 @"1" 
[1] id 0x00088a54 @"2" 
[2] id 0x00088a64 @"3" 
[3] id 0x00088a74 @"4" 

Dopo aver tolto primo elemento:

array NSMutableArray * 0x1040b5e0 
[0] id 0x00000000 
[1] id 0x00088a54 @"2" 
[2] id 0x00088a64 @"3" 

Che cosa sto facendo male qui?

+0

Secondo il vostro codice, l'oggetto "1" deve essere rimosso .. e il vostro codice funziona correttamente .. allora che tipo di problema state affrontando ????? –

+0

manca anche il "4" e l'elemento 0 è nullo, che è errato – Fonix

+0

@VineetSinghRawat, guarda l'output. Sì, "1" è stato rimosso. Ma "2" dovrebbe essere il primo e "3" dovrebbe essere il secondo e dovrebbe essere ancora "4". Quello che ha ottenuto è un oggetto nullo all'indice 0 seguito da "2" e "3" e "4" scomparsi. È ciò che ti aspetteresti da [array removeObjectAtIndex: 0]? –

risposta

8

Stai utilizzando lldb per il debug? Prova gdb se così.

lldb ha noti bug di questo tipo in cui riporta i valori errati delle variabili durante una sessione di debug.

Per modificare il debugger gdb:

  1. Clicca il tuo obiettivo nella barra degli strumenti
  2. Selezionare 'Edit schemi'
  3. Assicurarsi che il sistema di 'run' viene selezionato nel riquadro a sinistra.
  4. Modificare il menu a discesa "Debugger" da lldb a gdb.
+0

Ma funziona bene per me sia per i Debugger. –

+1

In effetti ci sono rapporti che suggeriscono che il debugger LLDB ha alcuni bug nelle versioni precedenti di Xcode, come 4.3.1. Se non è possibile eseguire l'aggiornamento (che è sempre consigliato), provare a utilizzare l'alternativa GDB. – Calin

+0

Mi ha aiutato, grazie. – evilgeniuz

3

lo stesso codice funziona correttamente., Basta pulire e creare il progetto. ecco il mio codice

NSMutableArray *sampleArray = [[NSMutableArray alloc] 
         initWithObjects:@"1",@"2",@"3",@"4", nil]; 
NSLog(@"%@", sampleArray); 
[sampleArray removeObjectAtIndex:0]; 
NSLog(@"%@", sampleArray); 
Problemi correlati