Estoy intentando vaciar un NSMutableArray con [myarray removeallobjects]; pero obtengo el error exc_bad_access. ¿Es esta la manera correcta de vaciar la matriz? Traté de ponerlo a cero, pero tampoco funciona. En realidad, lo que estoy haciendo es llenar la matriz con datos y el usuario tiene la opción de "actualizar" los datos y quiero vaciar la matriz antes de ingresar los datos actualizados. No puedo publicar ningún código porque es demasiado grande.Cómo vaciar correctamente un NSMutableArray
Respuesta
-[NSMutableArray removeAllObjects]
es la manera correcta de vaciar un NSMutableArray
. Lo más probable es que tengas un accidente porque aún utilizas los objetos que eliminaste en algún lugar, quizás en tu IU.
O el objeto fue liberado en exceso después de agregarlo a la matriz. –
Estás teniendo un bloqueo porque tu matriz ya no existe en la memoria.
apuesto es porque se le olvidó para retenerlo (o se libera demasiado pronto)
Probablemente creado usando [NSMutableArray array]
o arrayWithObjects:
o algunas de esas variantes, o llamada autorelease
después de su alloc
+ init
, mientras que si es una variable de instancia, debes retenerla hasta que el objeto sea desasignado.
Tenga en cuenta que memory mgmt es una parte clave del desarrollo de iOS. Asegúrate de saberlo perfectamente (tal como se vuelve natural y no dudarás en cuándo retenerlo y cuándo soltarlo) antes de seguir adelante, te evitará muchos problemas como este una vez que lo utilices bien.
@property (no atómico, retener) NSMutableArray * checkinArray; en mi .h. checkinArray = [[NSMutableArray alloc] init]; en viewdidload y [checkinArray release]; en dealloc (el último no es el problema porque se cuelga incluso si elimino esta línea de dealloc). ¿Ves algo mal? – BlackM
Creo que el problema es en este fragmento de código que usted ha proporcionado en los comentarios,
[checkinArray addObject:checkinsA];
[checkinsA.taggedID release];
[checkinsA.taggedName release];
[checkinsA release];
taggedID
y taggedName
son propiedades del objeto checkinsA
. Deben lanzarse en el método dealloc
solamente. La matriz no conserva el árbol de objetos. Solo conserva el objeto raíz. Entonces no debería haber un lanzamiento aquí. Así que noquee las dos líneas en el centro y haga que sea
[checkinArray addObject:checkinsA];
[checkinsA release];
checkinsA.taggedID y taggedName son NSMutableArrays en los checkinsA. También checkinsA está en un bucle for. – BlackM
para (usuarios de NSDictionary * en usuarios) { Checkin * checkinsA = [[Checkin alloc] init]; checkinsA.taggedName = [[NSMutableArray alloc] init]; checkinsA.taggedID = [[NSMutableArray alloc] init]; ...... [checkinArray addObject: checkinsA]; [checkinsA.taggedID release]; [liberación de checkinsA.taggedName]; [checkinsA release]; – BlackM
- 1. Cómo vaciar un TFileStream?
- 2. Cómo copiar un NSMutableArray
- 3. Cómo agregar un NSMutableArray a un NSMutableArray Objective-c
- 4. Cómo vaciar el contenido de un div
- 5. cómo vaciar un archivo usando Python
- 6. ¿Cómo vaciar un socket en python?
- 7. Inicializar NSMutableArray: [NSMutableArray matriz];
- 8. Cómo devolver un NSMutableArray de un NSSet
- 9. Cómo borrar/vaciar el cartón en la vista Vaciar 0isarpear
- 10. Cómo ordenar NSMutableArray utilizando sortedArrayUsingDescriptors?
- 11. cómo vaciar firefox dom localstorage
- 12. ¿Cómo inicializar un NSMutableArray en Objective C?
- 13. ¿Cómo puedo crear un NSMutableArray de estructuras?
- 14. cómo agregar un objeto a NSMutableArray
- 15. Cómo almacenar valores enum en un NSMutableArray
- 16. ¿Cómo mover un elemento en NSMutableArray?
- 17. Cómo buscar a través de un NSMutableArray
- 18. ¿Cómo puedo ordenar un NSMutableArray alfabéticamente?
- 19. ¿Cómo agregar un valor entero en NSMutableArray?
- 20. Cómo cortar NSMutableArray
- 21. Concatenar un NSMutableArray al final de otro NSMutableArray
- 22. Vaciar a ListView
- 23. cómo comparar dos NSMutableArray?
- 24. Cómo usar CGPathApply correctamente
- 25. Cambiar un valor dentro de un NSMutableArray
- 26. Intercambiando elementos en un NSMutableArray
- 27. Cómo almacenar CGGradientRef en NSMutableArray
- 28. NSMutableArray alloc init vs arsenal NSMutableArray
- 29. Vaciar un grupo de elementos MSBuild
- 30. ¿Cuándo vaciar un archivo en Go?
¿Puede agregar la parte donde está agregando los objetos a la matriz? –
[checkinArray addObject: checkinsA]; [checkinsA.taggedID release]; [liberación de checkinsA.taggedName]; [checkinsA release]; donde checkinsA es un objeto personalizado. También este comando está en bucle. – BlackM