hoo*_*kjd 3 iphone memory-management autorelease
我有一个简单的函数,在解码后返回一个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;
}
Run Code Online (Sandbox Code Playgroud)
我对[autorelease]的理解是它应该以这种方式使用...我想要保持对象的长度足以在我的函数中返回它然后让对象稍后自动释放.所以我相信我可以通过这样的代码使用这个功能,而无需手动释放任何东西:
NSString *myDecodedString = [myString decodeValue];
Run Code Online (Sandbox Code Playgroud)
但是这个过程报告泄漏,我不明白如何改变它以避免泄漏.我究竟做错了什么?
归档时间: |
|
查看次数: |
1847 次 |
最近记录: |