У меня есть простая функция, которая после декодирования возвращает 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];
Но этот процесс сообщает об утечках, и я не понимаю, как его изменить, чтобы избежать утечек. Что я делаю неправильно?