Objective c 这个漏水的地方在哪里为什么我有记忆问题?

Objective c 这个漏水的地方在哪里为什么我有记忆问题?,objective-c,cocoa-touch,ipad,memory-management,memory-leaks,Objective C,Cocoa Touch,Ipad,Memory Management,Memory Leaks,我正在创建的iPad应用程序有点麻烦。在一个点上有大约80帧的简单图像序列/动画 代码如下所示(这是UIView子类): -(id)init{ UIImage*theImage=[UIImage ImageName:@“chart0075.jpg]”; //拿到镜框 CGRect lgeFrame=CGRectMake(20,130,theImage.size.width,theImage.size.height); //设置新框架 CGFloat newHeight=图像大小高度/1.65;

我正在创建的iPad应用程序有点麻烦。在一个点上有大约80帧的简单图像序列/动画

代码如下所示(这是UIView子类):

-(id)init{
UIImage*theImage=[UIImage ImageName:@“chart0075.jpg]”;
//拿到镜框
CGRect lgeFrame=CGRectMake(20,130,theImage.size.width,theImage.size.height);
//设置新框架
CGFloat newHeight=图像大小高度/1.65;
CGFloat newWidth=图像大小宽度/1.65;
CGRect smlFrame=CGRectMake(480,200,新宽度,新高度);
self=[super initWithLargeFrame:lgeFrame smallFrame:smlFrame];
如果(自我){
//让我们将图像添加为图像视图
theImageView=[[UIImageView alloc]initWithImage:theImageView];
[图像视图集合框架:CGRectMake(0,0,self.frame.size.width,self.frame.size.height)];
[图像视图集AutoResizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
[自添加子视图:图像视图];
//现在我们需要为图像序列创建一个图像数组
NSMutableArray*imageSeq=[NSMutableArray];
对于(int i=1;i<76;i++){
NSString*jpgnumber;

如果(i您没有释放图像视图

[theImageView release]

内存使用情况取决于图像解压的大小。宽度乘以高度时间4将告诉您每个图像将占用的字节数,乘以图像数即可得到总数

我猜你的记忆力有点太差了

使用VMTracker仪器在仪器中运行以确保安全。您应该查看脏的驻留内存


WWDC'10和WWDC'09在仪器和内存使用分析方面都有很好的内容。

我不知道它是否有用,但我会将
NSString*jpgnumber;
NSString*imageFile;
移到for循环之外。另外,我会使用
NSMutableArray*imageSeq=[[NSMutableArray alloc]init]
。只要有可能,我就避免自动释放对象。您好。我已经使可变数组和图像非自动释放,并且我已经将所有指针移到for循环之外,但我仍然遇到同样的问题…:(谢谢你的帮助。它很可能是一个实例变量。它是…但它是在dealloc中发布的…我需要一个对它的引用来启动动画。不幸的是,这不是问题所在。嗯,我得到了一个89.15的脏大小和90.64mb的驻留空间。我猜这很高,因为工具的时间线已经满了。我怎么找到你呢是什么原因造成的?谢谢你的帮助,我发现了问题…:(当我浏览我的导航界面时,有两个导航控制器上有相似的动画,这就是导致内存使用量增加的原因。如果我转到最后一个导航控制器并使用虚拟机跟踪器,则内存将增加到90mb,但如果我弹回到带有动画的视图控制器之前,内存将减少年龄下降到20mb。我该如何解决这个问题?有什么想法吗?当然,不要一次加载所有图像,无论如何,你不能一次在屏幕上显示90MB的图像,所以你应该流式显示它们,平铺它们,或者任何其他方法都可以帮助你在任何时候只在内存中存储所需的内容。
[theImageView release]