我在IOS 6上有一个目录应用程序。所以每个视图中都有一些UIImageView。
我认为,当我传递给其他视图时,旧的图像视图不会被释放。所以我的真实记忆。变成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弹出第二个viewcontroller。
答案 0 :(得分:0)
如果您使用Instruments监视内存使用情况,请确保Zombies已关闭(方案选项)。默认情况下,Zombies不会被处理掉,因此您的内存使用量会爆炸。