【发布时间】:2011-07-15 23:56:58
【问题描述】:
我创建了一个示例应用程序,其中我有一个基本的全屏 UIImageView 设置为背景。这个应用程序非常简单。它只有 2 页。 (我将在下面发布代码)。 NIB 只能作为 UIImageView。我尝试了 2 种不同的场景 -
释放NIB文件和图像是否有问题。
我遇到了一些内存泄漏。
1) 示例 1 (BAD)- 我将图像直接加载到 NIB。当我推送视图时,内存增加了 5MB。当我弹出(使用 NavigationController)顶部的 View 时,内存只减少了 1.5MB。确实调用了 Dealloc。我没有 IBOutlets。所以,对我来说,这要么是缓存这个图像,要么是在内存中的某个地方保留这个图像。
2) 示例 2 (GOOD)- 为 UIImage 视图设置一个 IBOutlet 并将图像放入 UIImageview 中,如下所示(我知道我可以通过编程方式创建 UIImageView,但我在这里测试的是内存而不是我的屏幕创建技能)。这会很好地清理自己。它从内存中删除图像,我可以在 Instruments 中看到内存下降。
@interface Page3VC : UIViewController {
UIImageView*backimage;
}
@property(retain, nonatomic) IBOutlet UIImageView*backimage;
end
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
backimage.image = [self getImage:@"hipHome.png"];
}
-(void)viewDidDisappear:(BOOL)animated {
backimage.image = nil;
[super viewDidDisappear:animated];
}
-(UIImage*)getImage:(NSString*)imageName{
//return [UIImage imageNamed:imageName];
return [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageName ofType:nil]];
}
【问题讨论】:
-
你能显示
getImage:的内容吗,我怀疑我知道其中的区别,但我不能确定。 -
我添加了getImage。谢谢 - 我根据下面提到的链接 Oculus 添加了 getImage。
标签: iphone ipad memory memory-leaks uiimageview