Iphone 如何为同一类型的类分配单独的内存空间

Iphone 如何为同一类型的类分配单独的内存空间,iphone,Iphone,嗨,我的程序将小图像添加到主视图。我有这个撤消按钮来删除最近添加的图像(子视图)。当它有所有不同的图像时工作正常,但当有两个相同的图像时会出现错误。 我认为这是因为它都指向相同的原始png文件。但我不知道如何修复它。请给我一些提示 add{ UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"pah%d",tagNum]]; TouchImageView *touchImageView = [[T

嗨,我的程序将小图像添加到主视图。我有这个撤消按钮来删除最近添加的图像(子视图)。当它有所有不同的图像时工作正常,但当有两个相同的图像时会出现错误。 我认为这是因为它都指向相同的原始png文件。但我不知道如何修复它。请给我一些提示

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];”。在第二次尝试添加图像后,它冻结在这一点上。