Iphone 如何为同一类型的类分配单独的内存空间
嗨,我的程序将小图像添加到主视图。我有这个撤消按钮来删除最近添加的图像(子视图)。当它有所有不同的图像时工作正常,但当有两个相同的图像时会出现错误。 我认为这是因为它都指向相同的原始png文件。但我不知道如何修复它。请给我一些提示Iphone 如何为同一类型的类分配单独的内存空间,iphone,Iphone,嗨,我的程序将小图像添加到主视图。我有这个撤消按钮来删除最近添加的图像(子视图)。当它有所有不同的图像时工作正常,但当有两个相同的图像时会出现错误。 我认为这是因为它都指向相同的原始png文件。但我不知道如何修复它。请给我一些提示 add{ UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"pah%d",tagNum]]; TouchImageView *touchImageView = [[T
add{
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"pah%d",tagNum]];
TouchImageView *touchImageView = [[TouchImageView alloc] initWithFrame:imageRect];
imageCounter++;
touchImageView.tag = imageCounter;
touchImageView.image = image;
touchImageView.center = CGPointMake(160.0, 230.0);
[view addSubview:touchImageView];
}
undo{
[[self.view viewWithTag:imageCounter] removeFromSuperview];
imageCounter--;
}
我怀疑这是您的问题,但
imageNamed:
使用内部缓存系统将图像缓存在内存中。每次您请求[UIImage ImageName:@“foo”]
时,都会得到相同的UIImage实例
您可能希望使用imageWithContentsOfFile:
,它返回UIImage的唯一实例
尝试一下,看看它是否有什么不同。如果你只是需要删除最近添加的图像。。。 然后每次添加图像时,都会像这样存储其引用-它将与ARC一起很好地工作
UIImageView *imageView = touchImageView;
然后在“删除最近添加的图像”按钮中单击
for(UIImageView *iV in view.subviews)
{
if(iV == imageView)
{
[iV removeFromSuperView];
}
}
我想它会工作的…它显示了奇怪的错误。就在我上面的代码之前,我正在向屏幕添加mainview,比如“[self.view insertSubview:photoViewCon.view atIndex:0];”。在第二次尝试添加图像后,它冻结在这一点上。