2009-07-08 27 views
5

recibo este error, ¿alguien lo sabe? 2009-07-08 18: 42: 36.778 FlashCards [1297: 20b] Categoría ID = 1 FlashCards (1297,0xa0690fa0) malloc: * Error para 0x4fd78a0 objeto: puntero de ser liberado no se asignaron FlashCards (1297,0xa0690fa0) malloc: * de error para el objeto 0x4fdc200: doble liberación *** establecer un punto de interrupción en malloc_error_break depurar¿es necesario liberar un NSInteger en iphone?

Respuesta

16

no, un NSInteger no es un objeto; es simplemente una typedef para una int (para aplicaciones de 32 bits) o un long (para aplicaciones de 64 bits):

#if __LP64__ 
typedef long NSInteger; 
#else 
typedef int NSInteger; 
endif 
+0

dime acerca del error ¿Cómo puedo encontrar el objeto que está dando el error? –

+0

Parece que estás llamando a la versión de un NSInteger que no puedes hacer, porque no es un objeto. –

3

NSInteger es un typedef para un tipo primitivo, no es un objeto que puede responder a métodos como retener o liberar. Aunque se denomina de manera similar a clases Cocoa como NSNumber o NSValue, en realidad se trata igual que int, float, etc.

+0

cuénteme sobre el error ¿cómo puedo encontrar qué objeto está dando error? –

0

El mensaje de error le da una buena pista sobre cómo solucionar este problema: establezca un punto de interrupción en malloc_error_break. En Xcode, abra la ventana de puntos de interrupción (opción-cmd-B). En el campo que dice "Hacer doble clic para el símbolo", ingrese malloc_error_break. Vuelva a ejecutar su aplicación en el depurador (seleccione Depurar en el menú Ejecutar). El depurador se detendrá en el punto del error que informó. Yo examinaría la traza de la pila en ese punto para encontrar dónde has liberado doblemente este recuerdo.

+0

establece un punto de interrupción en malloc_error_break. En Xcode, abra la ventana de puntos de interrupción (opción-cmd-B). En el campo que dice "Hacer doble clic para el símbolo", ingrese malloc_error_break. Vuelva a ejecutar su aplicación en el depurador (seleccione Depurar en el menú Ejecutar). Por favor, explíquelo con más detalle. donde puedo establecer un punto de interrupción en malloc_error_break. –

+0

En Xcode, seleccione Ejecutar-> Mostrar-> Puntos de interrupción (en el menú Ejecutar) o presione simultáneamente la opción, los botones cmd y B. En el panel Puntos de interrupción que aparece, haga doble clic en el cuadro que dice "Hacer doble clic para el símbolo" y escriba "malloc_error_break" (sin comillas). –

+0

cuál es la ubicación del punto de interrupción "malloc_error_break" –