我是新手我正在使用工具,到目前为止,它对我有很大的帮助,但我现在很困惑,因为它向我报告了一个内存泄漏,而它泄露的块历史记录显示,该内存的引用计数最终变成了0。这是什么意思?
我真的很尴尬,我不能在这里发布一张图片...所以我必须用文字来描述它。希望这对你来说足够清楚:
事件类型|| RefCt ||责任库||责任调用者
马洛克预测数据||1%预测数据|| MyWeather预测数据||MyWeather预测数据||+预测数据||+预测数据parseSingleForecastWithXMLElement:
自动发布||自动发布数据|| MyWeather数据|自动发布数据||+预测数据parseSingleForecastWithXMLElement:
保留预测数据||2 MyWeather数据||parseWithData数据||+预测数据parseWithData:
发布版本||1个版本:版本||基金会版本:版本:版本|| +NSAutoreleasePool:
保留对目标的支持||2:目标目标||基金会:目标:目标目标|| +NSThread initWithTarget:选择器:object:
发布日期||1个月:月供日||基金会月日月日|月日日|| +NSString比较:选项:
发布版本||0版本*|| MyWeather *||+根视图控制器dealloc
任何帮助都会很感谢~
发布于 2010-12-21 14:47:23
这是由于在forecastData的释放过程中缺少超级释放,导致forecastData的部分内存永远不会被释放,而forecastData的保留计数却变成了零。不管怎样,谢谢你们。
发布于 2010-12-19 03:14:31
您没有提供太多的示例代码,所以它可以是任何东西。MyWeather的RefCount是0,但基础仍然是1,所以也许你在任何地方分配了一个NSSting,但从未发布过?
顺便说一句。我永远不会分配-init一个字符串,而是直接设置文本,让内存管理来完成剩下的工作。我不知道为什么,但我认为这是一个小错误。有时,如果我尝试这样的操作,我会得到奇怪的错误:
NSString *str = [[NSString alloc] initWithString:@"some Text"];
myLabel.text = str;
[str release];myLabel应该保留它,但是它没有。如果我尝试release它,我会得到一个错误。(如果不是,就会泄漏)
如果我使用
NSString *str = @"some Text";
myLabel.text = str;它工作得很好,没有错误,没有泄漏。
发布于 2010-12-19 03:47:06
你在这个设备上试过了吗?有时您可以看到出现的泄漏并不是真正的泄漏。
另一个原因可能是您启用了NSZombie,这意味着对象不会真正被释放。
https://stackoverflow.com/questions/4479245
复制相似问题