Mal acceso al almacenar NSUserDefaults

Estoy usando el siguiente código para guardar un número en NSUserDefaults:

NSUserDefaults *prefs = [[NSUserDefaults standardUserDefaults]retain];
NSNumber *num = [[NSNumber alloc]initWithInt:indexPath.row];
[prefs setValue:num forKey:@"randomkeyhere"];

Solo en algunos puntos obtengo un

EXC_BAD_ACCESS (código=2).

¿Estoy haciendo algo mal? ¿Es este comportamiento indefinido o algo por el estilo? Me pregunto por qué solo lo consigo a veces y no siempre.

preguntado el 29 de julio de 12 a las 06:07

tan loco, estás reteniendo un Singleton -

2 Respuestas

NSUserDefaults standardUserDefaults es un objeto singleton administrado por iOS. No es un objeto nuevo lo que tú inicias. Deshacerse de retain.

Además, intente establecer un punto de interrupción en el método para ver exactamente dónde falla el programa. Publique los errores de la consola a continuación:

Respondido 29 Jul 12, 07:07

Hice eso, pasa lo mismo. Y gracias por los comentarios, soy nuevo en la programación de iOS. Sin embargo, ¿tiene alguna idea de por qué esto solo sucede de vez en cuando? - Kgrover

no importa, pude depurarlo, fue un error en otro lugar. - Kgrover

Impresionante, me alegro de que lo hayas resuelto. - El Kraken

en el singleton, la retención es así

- (id)retain
{
    return self;
}

por lo tanto, el número de retención no agregará 1.

puedes mirar esto:

singleton en el objetivo c

contestado el 23 de mayo de 17 a las 11:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.