2011-02-02 12 views
8

que no entiendo sobre cómo depurar este mensaje de error:índice 0 allá de los límites de error de matriz vacía

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' 

Hay NSMutableArray en este código ... así que ¿cómo es esto posible?

+7

Simple: su 'NSMutableArray' está vacío y está intentando acceder a objetos desde él. ¿Cómo lo estás creando y poblando? – BoltClock

+0

No sé nada sobre el desarrollo de iPhone, pero parece que está accediendo al índice 0 de una matriz vacía, que obviamente no tiene índice 0. – kaoD

Respuesta

29

Tiene una matriz vacía. Intentó llamar al [array objectAtIndex:0]. 0 está más allá de los límites de una matriz vacía (lo cual no es sorprendente, cualquier cosa está más allá de los límites de una matriz vacía).

+0

Lo sabía ... pero ¿en qué línea está este error? – aherlambang

+0

@EquinoX: compruebe su método 'NeighborMapViewController regionFromLocations'. – BoltClock

+0

@EquinoX: está en '[NeighborMapViewController regionFromLocations]'. No se da ningún número de línea en la pila. Pero si lo tiene en el depurador de Xcode, solo vaya a la ventana del depurador y mire en el rastreo de la pila, debería mostrarle la línea. –

4

Significa que al principio de [NeighborMapViewController regionFromLocations] está intentando indexar un objeto NSMutableArray. Esa matriz tiene cero elementos, está vacía. Pero al parecer estás intentando acceder al índice 0, que sería el primer elemento. Como no hay primer elemento, obtienes una excepción.

Probablemente el código que espera haber ejecutado para agregar elementos a la matriz todavía no se ha ejecutado, o simplemente necesita verificar la longitud de la matriz antes de intentar acceder al elemento en el índice 0. Es difícil de decir sin saber más acerca de lo que estás haciendo.

gdb informa el desplazamiento como 65 bytes en la función, por lo que es probable en una de las primeras líneas. Probablemente podría inspeccionar manualmente el código de la función para ver, o establecer un punto de interrupción en la primera línea de la función y pasar a través de él.

+0

Realmente no tengo idea de dónde está esta matriz – aherlambang

+1

Supongo que NeighborMe es tu aplicación y NeighborMapViewController es tu código; es lo único en el rastro de la pila que obviamente no es una API de Apple. Si desea ayuda para reducirlo, publique el código de [NeighborMapViewController regionFromLocations]. –

0

Estaba viendo este error, sin embargo, no como una excepción sino solo en el Issue Navigator. La solución fue simplemente reiniciar XCode, entonces el error desapareció.

Cuestiones relacionadas