Я пытаюсь сохранить строку md5 как переменную экземпляра класса вместо фактического пароля. У меня есть статическая функция, которая возвращает строку md5, которую я пытаюсь сохранить в переменной экземпляра вместо действительного пароля.
У меня есть следующий установщик для моей переменной экземпляра класса:
-(void)setPassword:(NSString *)newpass{
if(newpass != password){
password = [utils md5HexDigest:newpass];
}
}
Это вернет правильную строку md5 и сохранит ее в переменной пароля в моей функции инициализации: [self setPassword: pword] ;.
Если я вызову другой метод экземпляра и попытаюсь получить доступ к self.password ", я получу" EXC_BAD_ACCESS ".
Я понимаю, что память освобождается, но я понятия не имею, чтобы убедиться, что она остается.
Я попытался выделить init с авто-выпуском безуспешно.
Это функция md5HexDigest, вызываемая во время инициализации (любезно найденная в другом вопросе 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;
}
Любая помощь / указатели будут с благодарностью. Я бы предпочел, чтобы строка md5 сохранялась в памяти, а не фактический пароль, вызывающий md5 каждый раз, когда мне нужно было использовать пароль.
Заранее спасибо.