UIView retainCount为0,但内存未释放

时间:2012-09-11 13:21:58

标签: objective-c ios memory-management uikit

我正在为iOS开发一款应用,而且我遇到了内存不足警告的问题。

我的应用正在点击按钮时加载包含大量子视图的大视图。内存使用量增长,这是可以理解的(从30 Mb到80 Mb)。但是,当用户选择另一个菜单项时 - 此视图已发布,但是!应用程序使用的内存量不会减少任何内存。我使用以下代码来发布视图:

storeView.hidden = YES;
NSLog(@"%d", [storeView retainCount]);
[storeView removeFromSuperview];
storeView = nil;

NSLog在第二行打印:1,因此在发布后应该取消分配。我的实现 - (void)dealloc;会被调用(我称之为[super dealloc];在它的最后一行)。然而在那之后我仍然有低记忆警告。

仪器发现只有几个泄漏的NSStrings,这些都无法引起内存警告。

你能提出任何建议吗?

1 个答案:

答案 0 :(得分:2)

释放调用会降低保留计数,如果保留计数为0,则可能会被清除,但不一定是这样。当保留计数为零并且您尝试访问变量时,它可能仍然有效,它可能不起作用。你不能指望它。