我有一个简单的函数,它在解码后返回一个 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];
但是这个过程正在报告泄漏,我不明白如何更改它以避免泄漏。我究竟做错了什么?