Estoy tratando de almacenar la cadena md5 como una variable de instancia de clase en lugar de la contraseña real. Tengo una función estática que devolverá una cadena md5 que estoy tratando de almacenar en una variable de instancia en lugar de la contraseña real.Objective-C Resultado de un método estático guardado en la variable de instancia de clase dando "EXC_BAD_ACCESS" cuando se usa
tengo el siguiente colocador para mi instancia de clase variables:
-(void)setPassword:(NSString *)newpass{
if(newpass != password){
password = [utils md5HexDigest:newpass];
}
}
Esto pasará hacia atrás la cadena md5 correcta y guardarlo en la variable de contraseña en mi función init: [setPassword auto: pword] ;.
Si llamo a otro método de instancia y tratar de acceder self.password" voy a conseguir 'EXC_BAD_ACCESS'.
que entender que la memoria se está liberado, pero no tengo ninguna pista para asegurarse de que se mantiene.
me han tratado con init alloc autorelease sin suerte
Ésta es la función md5HexDigest recibiendo llamadas durante el init (que se encuentra en otra pregunta amablemente stackoverflow):.
+ (NSString*)md5HexDigest:(NSString*)input {
const char* str = [input UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5(str, strlen(str), result);
NSMutableString *ret = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH*2];
for(int i = 0; i<CC_MD5_DIGEST_LENGTH; i++)
[ret appendFormat:@"%02x",result[i]];
return ret;
}
Cualquier ayuda/sugerencia sería muy apreciada. Preferiría tener guardada la cadena md5 en memoria que la contraseña real que llama al md5 cada vez que necesitaba usar la contraseña.
Gracias de antemano.
Se puede publicar el contenido de su interfaz? – Alex
¿No es el problema de que el objeto que tienes ES se libera automáticamente? intente imprimir el recuento de retención en la consola para depurar [ret retainCount] [password retainCount] –
No, no llame a retainCount. – pwc