Ios6 使用圆弧时是否应删除所有子视图

Ios6 使用圆弧时是否应删除所有子视图,ios6,uiview,automatic-ref-counting,Ios6,Uiview,Automatic Ref Counting,当用户在应用程序中移动时,我将UIView堆叠在彼此的顶部,在不同的屏幕之间来回移动。这些UIView可以是普通控件(按钮、标签等),也可以是从UIView继承的自定义控件。当按下其中一个屏幕上的后退按钮时,我会执行大量清理代码来释放实例变量的内存,并停止计时器和关闭网络连接。我认为在这里使用ARC并部署到iOS 6和iOS 7设备也很重要 典型控件的编码如下所示: UIImageView *ivSoundBottom = [[UIImageView alloc] initWithFra

当用户在应用程序中移动时,我将UIView堆叠在彼此的顶部,在不同的屏幕之间来回移动。这些UIView可以是普通控件(按钮、标签等),也可以是从UIView继承的自定义控件。当按下其中一个屏幕上的后退按钮时,我会执行大量清理代码来释放实例变量的内存,并停止计时器和关闭网络连接。我认为在这里使用ARC并部署到iOS 6和iOS 7设备也很重要

典型控件的编码如下所示:

    UIImageView *ivSoundBottom = [[UIImageView alloc] initWithFrame:CGRectMake(270, 365, 30, 30)];
    UIImage *imgSoundBottom = [UIImage findCustomImage:@"ICN_Alarm_Sound_Bottom.png"];
    [ivSoundBottom setImage:imgSoundBottom];
    [self addSubview:ivSoundBottom];
    imgSoundBottom = nil;
    ivSoundBottom = nil;
此控件是在屏幕加载时创建的,不再被引用


我的问题是:在ARC下,我是否仍然需要遍历所有子视图并在每个子视图上调用removeFromSuperview以释放内存?

不,您不需要。您也不需要这些声明:

imgSoundBottom = nil;
ivSoundBottom = nil;

因为ARC会意识到对这些变量的引用已经超出范围,并为您这样做。

不,您没有。您也不需要这些声明:

imgSoundBottom = nil;
ivSoundBottom = nil;

因为ARC会意识到对这些变量的引用超出了范围,所以请为您这样做。

谢谢您的回答。至于零;我发现泄漏报告的内存与iPad/iPhone上实际使用的内存非常不同。泄漏报告仅使用了2MB,但我经常收到内存不足警告。一旦我编码了我自己的内存签入,我看到我使用了超过200Mb的内存。在低内存警告中添加nils后,该应用程序将以30~50MB的速度运行。老实说,我有一个更强大的Windows背景,我仍然掌握着Mac内存管理。大部分都是通过几个小时的反复试验完成的。谢谢你的回答。至于零;我发现泄漏报告的内存与iPad/iPhone上实际使用的内存非常不同。泄漏报告仅使用了2MB,但我经常收到内存不足警告。一旦我编码了我自己的内存签入,我看到我使用了超过200Mb的内存。在低内存警告中添加nils后,该应用程序将以30~50MB的速度运行。老实说,我有一个更强大的Windows背景,我仍然掌握着Mac内存管理。大部分都是通过几个小时的反复试验完成的。