1

我正在为 iOS 开发一个应用程序,但遇到了内存不足警告的问题。

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

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

第二行中的 NSLog 打印:1,因此在发布后它应该被释放。我的 -(void) dealloc 的实现;确实被调用了(我在它的最后一行调用了 [super dealloc]; )。然而在那之后我仍然有低内存警告。

Instruments 只发现了几个泄漏的 NSString,它们不可能导致内存警告。

你能给点建议吗?

4

1 回答 1

2

释放调用会降低保留计数,如果保留计数为 0,它可能会被清除,但不必如此。当保留计数为零并且您尝试访问变量时,它可能仍然有效,也可能无效。无论哪种方式,你都不能指望它。

于 2012-09-11T13:24:12.897 回答