gpt4 book ai didi

iphone - 返回 autorelease NSString 仍然会导致内存泄漏

转载 作者:行者123 更新时间:2023-12-03 19:40:51 25 4
gpt4 key购买 nike

我有一个简单的函数,在解码后返回一个 NSString 。我在我的应用程序中经常使用它,每次使用它时,它似乎都会造成内存泄漏(根据“泄漏”工具)。 Leaks 告诉我问题出在我分配要返回的 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];  

但是这个过程正在报告泄漏,我不明白如何更改它以避免泄漏。我做错了什么?

最佳答案

我认为泄漏正在让你误入歧途。 Leaks 会告诉你被泄漏的对象最初分配在哪里,不一定与泄漏的原因相同。这段代码看起来不错 - 可能发生的情况是这个结果被保留在另一个类中的某个地方并且从未在那里发布。

关于iphone - 返回 autorelease NSString 仍然会导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2533514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com