为什么仪器报告泄漏,而其参考计数确实为零

我是绿手。我正在使用乐器,到目前为止它对我有很大的帮助,但我现在很困惑因为它报告了一个内存泄漏给我,而它泄漏的块历史告诉我该内存的引用计数最终变为0 。 这是什么意思? 我无法在这里发布图片真的很尴尬......所以我必须在文字中描述它。希望它对你来说足够清楚: 事件类型|| RefCt ||负责任的图书馆||负责任的来电者 Malloc         || 1        || MyWeather              || + [ForecastData parseSingleForecastWithXMLElement:] 自动释放||             || MyWeather              || + [ForecastData parseSingleForecastWithXMLElement:] 保留         || 2        || MyWeather              || + [ForecastData parseWithData:] 发布      || 1        || 基金会             || + [NSAutoreleasePool排水:] 保留         || 2        || 基金会             || + [NSThread initWithTarget:selector:object:] 发布      || 1        || 基金会             || + [NSString比较:选项:] 发布      || 0        || MyWeather              || + [RootViewController dealloc] 任何帮助将不胜感激〜     
已邀请:
它是由于在ForecastData的dealloc中缺少[super dealloc]引起的,因此在从dataData的保留计数确实变为零时,从不释放forecastData的部分内存。无论如何,谢谢你们。     
你没有提供太多的示例代码,所以它可以是任何东西。 MyWeather的RefCount是零,但是Foundation仍然是一个,所以也许你在任何地方分配了一个从未发布的NSSting? 顺便说一句。我永远不会分配init-init字符串,而是直接设置文本,让内存管理完成剩下的工作。我不知道为什么,但我认为这是一个小马车。如果我尝试这样的话,有时会出现奇怪的错误:
NSString *str = [[NSString alloc] initWithString:@"some Text"];
myLabel.text = str;
[str release];
myLabel
应该保留它,但它不会。如果我试着ѭ2它,我会收到错误。 (如果没有泄漏) 如果我使用
NSString *str = @"some Text";
myLabel.text = str;
它工作得很好,没有错误,没有泄漏。     
你在设备上试过了吗?有时您可以看到泄漏出现并非真正泄漏。 另一个原因可能是你启用了NSZombie,这意味着对象实际上没有被释放。     

要回复问题请先登录注册