デコード後にNSStringを返す単純な関数があります。アプリケーション全体で頻繁に使用していますが、使用するたびに(「リーク」ツールによると)メモリリークが発生するようです。リークは、自動リリースしても、返されるNSStringを割り当てる行に問題があることを示しています。関数は次のとおりです。
-(NSString *) decodeValue
{
NSString *newString;
newString = [self stringByReplacingOccurrencesOfString:@"#" withString:@"$"];
NSData *stateData = [NSData dataWithBase64EncodedString:newString];
NSString *convertState = [[[NSString alloc] initWithData:stateData encoding:NSUTF8StringEncoding] autorelease];
return convertState;
}
[autorelease]についての私の理解は、まさにこの方法で使用する必要があるということです...関数でオブジェクトを返すのに十分な時間オブジェクトを保持し、後でオブジェクトを自動解放させたい場合です。したがって、手動で何もリリースしなくても、このようなコードでこの関数を使用できると思います。
NSString *myDecodedString = [myString decodeValue];
しかし、このプロセスはリークを報告しており、リークを回避するためにそれを変更する方法がわかりません。私は何が間違っているのですか?