2011-02-02 11 views
8

non capisco su come eseguire il debug di questo messaggio di errore:indice 0 al di là di limiti per errore array vuoto

2011-02-01 20:45:56.151 NeMe[3206:207] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x027deb99 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x0292e40e objc_exception_throw + 47 
    2 CoreFoundation      0x027d4695 -[__NSArrayM objectAtIndex:] + 261 
    3 NeighborMe       0x0000f617 -[NeighborMapViewController regionFromLocations] + 65 
    4 NeighborMe       0x0001047b -[NeighborMapViewController locationManager:didUpdateToLocation:fromLocation:] + 94 
    5 CoreLocation      0x02393870 -[CLLocationManager onClientEventLocation:] + 793 
    6 CoreLocation      0x0239218b OnClientEvent + 49 
    7 CoreLocation      0x023a8a83 _Z22CLClientInvokeCallbackP10__CLClient13CLClientEventPK14__CFDictionary + 47 
    8 CoreLocation      0x023a9b2c _Z27CLClientHandleDaemonDataFixP10__CLClientPK23CLDaemonCommToClientFixPK14__CFDictionary + 290 
    9 CoreLocation      0x023acb30 _Z24CLClientHandleDaemonDataP12__CFMachPortPvlS1_ + 1125 
    10 CoreFoundation      0x02720982 __CFMachPortPerform + 338 
    11 CoreFoundation      0x027bfff4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52 
    12 CoreFoundation      0x02720807 __CFRunLoopDoSource1 + 215 
    13 CoreFoundation      0x0271da93 __CFRunLoopRun + 979 
    14 CoreFoundation      0x0271d350 CFRunLoopRunSpecific + 208 
    15 CoreFoundation      0x0271d271 CFRunLoopRunInMode + 97 
    16 GraphicsServices     0x030bd00c GSEventRunModal + 217 
    17 GraphicsServices     0x030bd0d1 GSEventRun + 115 
    18 UIKit        0x002eeaf2 UIApplicationMain + 1160 
    19 NeighborMe       0x00002818 main + 102 
    20 NeighborMe       0x000027a9 start + 53 
    21 ???         0x00000001 0x0 + 1 
) 
terminate called after throwing an instance of 'NSException' 

C'è NSMutableArray in questo codice ... così come è possibile?

+7

Semplice: il tuo 'NSMutableArray' è vuoto e stai provando ad accedere ad oggetti da esso. Come lo stai creando e popolando? – BoltClock

+0

Non so nulla di iPhone Dev, ma sembra che tu stia accedendo all'indice 0 di un array vuoto, che ovviamente non ha indice 0. – kaoD

risposta

29

Si dispone di un array vuoto. Hai provato a chiamare [array objectAtIndex:0]. 0 è oltre i limiti di un array vuoto (non sorprende: qualsiasi cosa è oltre i limiti di un array vuoto).

+0

Lo sapevo .. ma in quale riga si trova questo errore? – aherlambang

+0

@EquinoX: controlla il metodo 'NeighborMapViewController regionFromLocations'. – BoltClock

+0

@EquinoX: è in '[NeighborMapViewController regionFromLocations]'. Nessun numero di linea è indicato nello stack. Ma se lo hai nel debugger Xcode, vai alla finestra del debugger e guarda nella traccia dello stack, dovrebbe mostrarti la linea. –

4

Significa che all'inizio dello [NeighborMapViewController regionFromLocations] si sta tentando di indicizzare un oggetto NSMutableArray. Quella matrice ha zero elementi in essa: è vuota. Ma stai apparentemente cercando di accedere all'indice 0, che sarebbe il primo elemento. Poiché non esiste un primo elemento, ottieni un'eccezione.

Probabilmente il codice che ci si aspetta di aver eseguito per aggiungere elementi all'array non è ancora stato eseguito, oppure è sufficiente controllare la lunghezza dell'array prima di provare ad accedere all'elemento all'indice 0. È difficile dire senza sapere di più su quello che stai facendo.

gdb riporta l'offset come 65 byte nella funzione, quindi è probabile in una delle prime poche righe. Probabilmente potresti ispezionare manualmente il codice della funzione per vedere, o impostare un punto di interruzione sulla prima riga della funzione e attraversarla.

+0

Non ho idea di dove sia questo array – aherlambang

+1

Suppongo che NeighborMe sia la tua app e NeighborMapViewController sia il tuo codice - è l'unica cosa nella traccia dello stack che non è ovviamente un'API Apple. Se vuoi aiuto per ridurlo, inserisci il codice per [NeighborMapViewController regionFromLocations]. –

0

Stavo vedendo questo errore, tuttavia, non come eccezione ma solo in Issue Navigator. La soluzione era semplicemente riavviare XCode, quindi l'errore era sparito.

Problemi correlati