2012-12-18 7 views
5

Ho grande progetto con l'evento asincrono, e qualche volta mi ha errore [__NSArrayM InsertObject: atIndex:]: oggetto non può essere nullo, ma io havent idea di dove sta gettando questo errore .. Come posso prendere questo errore? Faccio affermare in tutto il mondo dove faccio il funzionamento InsertObject: atIndex e niente ..[__NSArrayM insertObject: atIndex:]: l'oggetto non può essere nullo - come determinare dove si trova l'errore?

Questo è pila:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil' 


*** First throw call stack: 

(0x34c352a3 0x32f4597f 0x34b7f8d9 0xc48db 0xc3ced 0xc3b41 0x1178d9 0x148aed 0x103cfd 0x102fc9 0x101f95 0x35f25595 0x35f7a13b 0x35f7a081 0x35f79f65 0x35f79e89 0x35f795c9 0x35f794b1 0x35f67b93 0x35f67833 0xd820b 0x35fc8275 0x3604aea9 0x326efa6f 0x34c0a5df 0x34c0a291 0x34c08f01 0x34b7bebd 0x34b7bd49 0x350b82eb 0x35f5a301 0x62e45 0x62de0) 

libc++abi.dylib: terminate called throwing an exception 
+0

ottenere un backtrace quando si verifica l'eccezione, sarà utile. – borrrden

risposta

46

Un buon modo per controllare dove il codice si blocca è:

1) goTo la scheda punto di interruzione in Xcode.

2) clicca sul pulsante '+" in basso

3) Aggiungi eccezione Breakpoint

a) Nella scheda pausa selezionare entrambe:.

i) on Throw 

    ii) on Catch 

e costruire e r

4) Questi punti di interruzione ti forniranno esattamente il punto in cui la tua app si blocca il 90% delle volte

Spero che questo ti aiuti in qualche modo. :)

+0

questa soluzione mi aiuti! grazie ! –

+0

Sei il benvenuto :) – Divya

+0

Hai dimenticato di questi e sono imbattuto in questa risposta, grazie ha aiutato un sacco – StuartM

-8

A quanto pare, l'oggetto è stato inserito non dovrebbe essere pari a zero. Controllalo!

+1

OP vuole sapere una tecnica per individuare * dove * questo sta accadendo, non * perché * – borrrden

+0

questa non è una risposta valida che aiuterà a risolvere questo problema –

3

A volte se non riesci a trovare l'eccezione dove il suo lancio. Prova ad aggiungere questi symbolic breakpoints nel tuo progetto. Quindi eseguire

 
objc_exception_throw 
malloc_error_break 
[NSException raise] 

Nella tua Xcode goto Product -> Debug -> Create Symbolic Breakpoint. Immettere ciascun punto di interruzione sopra indicato in Symbol quindi premere Done oppure è possibile creare alternativamente andando allo Breakpoint navigator (cmd + 6) nell'angolo in basso a sinistra è possibile trovare il simbolo +, fare clic su quello + quindi Add symbolic breakpoint. Ora prova a correre, ti porterà alla linea specifica dove si blocca.

+0

Questo ha aiutato a rintracciare un'eccezione in cui un normale punto di interruzione di eccezione non lo farebbe. –

0

Pensa che è necessario gestire il valore null dalla matrice. Il suo lavoro per me qualcosa di simile:

if (array ! = nil) { 
    NSLog(@"name is nil"); 
} else { 
    // addobject to array 
} 
Problemi correlati