0

我在 IOS 6 上有一个目录应用程序。所以每个视图中都有一些 UIImageView。

我认为,当我传递给其他视图时,不会释放旧的图像视图。所以我的Real Mem。变为 300MB 和虚拟内存。变为 500MB,我收到内存警告。

我以前用

- (void)viewDidUnload
{
    [super viewDidUnload];
    itemImageView = nil;
    scrollView = nil;
}

我应该多做些什么?我错过了一些常见的东西吗?

更新:

我正在像这样初始化 ImageView:

    __block UIImageView *imageview = [[UIImageView alloc] init];

并通过 AFNetworking 进行设置:

 AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:imageRequest
                                                                                  imageProcessingBlock:nil
                                                                                             cacheName:@"nscache"
                                                                                               success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image){
                                                                                                   imageview.image = image;
                                                                                               }
                                                                                               failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error){ NSLog([error description]); }
                                              ];

更新:

我正在使用故事板。所以从一种观点到另一种观点,我正在使用 Segue。如果我回到第一个控制器,则不会调用第二个控制器的 viewDidUnload。如果我再次进入第二个视图,内存会增加,这意味着第二个视图中的所有图像视图都会再次加载。我哪里错了?

更新 2:我开始相信,它是关于 Storyboard 和 Push segue。回到第一个视图,我正在使用 push segue。我创建了另一个自定义 segue 来弹出第二个视图控制器。

4

1 回答 1

0

如果您使用 Instruments 来监控内存使用情况,请确保 Zombies 已关闭(方案选项)。默认情况下,僵尸不会被处理掉,所以你的内存使用量会爆炸。

于 2012-10-15T13:59:38.930 回答