事件类型|| 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]
任何帮助将不胜感激〜
答案 0 :(得分:4)
这是由于在ForecastData的dealloc中缺少[super dealloc]引起的,因此在从dataData的保留计数变为零时,从不释放forecastData的部分内存。无论如何,谢谢你们。
答案 1 :(得分:0)
你没有提供太多示例代码,所以它可以是任何东西。 MyWeather的RefCount为零,但是Foundation仍然是一个,所以也许你在任何地方分配了一个从未发布的NSSting?
顺便说一句。我永远不会分配init-init字符串,而是直接设置文本,让内存管理完成剩下的工作。我不知道为什么,但我认为这是一个小马车。如果我尝试这样的话,有时我会遇到奇怪的错误:
NSString *str = [[NSString alloc] initWithString:@"some Text"];
myLabel.text = str;
[str release];
myLabel
应该保留它,但事实并非如此。如果我尝试release
,我会收到错误。 (如果没有泄漏)
如果我使用
NSString *str = @"some Text";
myLabel.text = str;
效果很好,没有错误也没有泄漏。
答案 2 :(得分:0)
你在设备上试过吗?有时您会看到漏洞显示并非真正泄漏。
另一个原因可能是你启用了NSZombie,这意味着对象实际上没有被释放。