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