2012-12-18 4 views
5

Ich habe großes Projekt mit Asynchron-Ereignis, und manchmal habe ich Fehler [__NSArrayM insert: atIndex:]: Objekt kann nicht null, , aber ich Idee havent, wo dieser Fehler wirft .. Wie kann ich diesen Fehler zu fangen? Ich mache überall behauptet in dem ich Betrieb insert machen: atIndex und nichts ..[__NSArrayM insertObject: atIndex:]: Objekt kann nicht Nil sein - wie bestimmen wo ist der Fehler?

Dieser Stapel wird:

*** 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

eine Rückverfolgung erhalten, wenn die Ausnahme auftritt, wird es hilfreich sein. – borrrden

Antwort

46

Ein guter Weg, um zu überprüfen, wo Ihr Code abstürzt ist:

1) goTo das Breakpoint Register in Xcode.

2) klicken Sie auf den ‚+“ Button am unteren Rand

3) Breakpoint- Ausnahme hinzufügen

a) In der Pause Registerkarte beides:.

i) on Throw 

    ii) on Catch 

und bauen und r un.

4) Diese Haltepunkte geben Ihnen 90% der Fälle genau dort, wo Ihre App abstürzt

Hoffe das hilft dir irgendwie. :)

+0

diese Lösung mir helfen! Danke ! –

+0

Sie sind willkommen :) – Divya

+0

Vergessen Sie diese und stolperte über diese Antwort, danke viel geholfen – StuartM

-8

Offenbar das Objekt, das Sie nicht gleich Null eingefügt werden soll. Prüfen Sie!

+1

OP möchte wissen, eine Technik zu finden * wo * das passiert, nicht * warum * – borrrden

+0

Dies ist keine gültige Antwort, die dazu beitragen, dieses Problem zu lösen –

3

Manchmal, wenn Sie die Ausnahme nicht finden können, wo es wirft. Versuchen Sie einfach, diese symbolic breakpoints in Ihrem Projekt hinzuzufügen. Dann laufen

 
objc_exception_throw 
malloc_error_break 
[NSException raise] 

In Ihrem Xcode goto Product -> Debug -> Create Symbolic Breakpoint. Geben Sie jeden oben genannten Haltepunkt in Symbol ein und drücken Sie dann Done oder Sie können alternativ erstellen, indem Sie auf die Breakpoint navigator (cmd + 6) in der linken unteren Ecke klicken Sie + Symbol, klicken Sie auf das + dann Add symbolic breakpoint. Jetzt versuche zu laufen, es bringt dich zur bestimmten Linie, wo es abstürzt.

+0

Dies half dabei, eine Ausnahme aufzuspüren, bei der ein regulärer Ausnahmeblockpoint dies nicht tun würde. –

0

Denken Sie, dass Sie den Nullwert von Array behandeln müssen. Sein für mich arbeiten so etwas wie:

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