実際のパスワードの代わりにクラスインスタンス変数としてmd5文字列を保存しようとしています。私は実際のパスワードの代わりにインスタンス変数に格納しようとしているmd5文字列を返す静的関数を持っています。Objective-C静的メソッドの結果がクラスインスタンス変数に保存され、使用時に "EXC_BAD_ACCESS"と表示されます
私は私のクラスのインスタンス変数のために、以下のセッターを持っている:
-(void)setPassword:(NSString *)newpass{
if(newpass != password){
password = [utils md5HexDigest:newpass];
}
}
は、これは正しいMD5文字列を返すため、私のinit関数内のパスワード変数に保存します:[自己のsetPassword:pword] ;.私は別のインスタンスメソッドを呼び出すとself.passwordにアクセスしようとした場合
『EXC_BAD_ACCESS」を私は得るでしょう』。
を私はメモリを解放なっていることを理解し、私はそれがとどまることを確認するには見当もつかない。
私は運と自動解放とのallocのinitを試してみました
をこれが初期化(丁重に別のstackoverflowの質問で見つかった)中に呼び出さなっmd5HexDigest機能です。
+ (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の文字列を保存したいと思います。
ありがとうございます。
あなたはあなたのインターフェイスの内容を投稿することができますか? – Alex
あなたが持っているオブジェクトが自動リリースされているという問題はありませんか? [ret retainCount] [password retainCount] –
いいえ、retainCountを呼び出さないでください。 – pwc