UIViews与内存泄漏有关

时间:2009-08-14 04:44:10

标签: iphone objective-c memory-leaks

我的iPhone应用程序GUI使用了许多UIViews。当用户点击按钮前进或后退时,用户“翻转”这些视图。视图存储在屏幕外,仅在程序需要显示时才会添加到实际视图中。

在翻转过程中,程序告诉父视图(uiscrollview)使用removeFromSuperView方法删除任何现有的子视图,然后添加新的子视图,这是用户应该看到的新页面。

但是,在设备上重复此过程几次后,程序崩溃了gdb退出状态101,我发现这是由内存不足错误引起的。

我尝试使用Leaks工具诊断此问题,但无济于事。只有1或2个小内存泄漏,程序在设备上的总内存使用量仅为2.5 MB。视频内存(而不是系统内存)是否可能运行不足?

我遇到关于backgroundColor和mem使用情况的this帖子,但我需要进一步解释。我应该减少设置backgroundColor以防止UIView的CALayer占用太多内存吗?

2 个答案:

答案 0 :(得分:1)

您是否可以访问苹果上的iphone示例代码?听起来像PageControl示例代码程序是您正在寻找的一个很好的例子。并且示例代码程序没有内存泄漏或任何此类问题:)链接here

当您使用乐器时,您是否检查过ObjectAllocations?我发现它比泄漏工具更有用(对象分配是漏洞包含的工具之一)。我认为如果视频内存耗尽,那将是一个不同的错误,但我可能是错的。

答案 1 :(得分:0)

您在哪里存储所有这些观点?具体来说,当你翻阅它们时,你有一些具有这些视图的数组(NSArray)吗?

除非参考计数为零,否则视图不会被取消分配。你的`[[UIView alloc] init]将引用计数设为1,将其添加为子视图使其为2,并将其从子视图中删除使其再次为1。看到你没有被告知特定的泄漏,似乎你并没有像在某处存放它那样真正泄漏。