2012-06-30 69 views
0

嗨,我的程序将小图像添加到主视图。我有这个撤消按钮来删除最近添加的图像(子视图)。当它具有所有不同的图像时它工作正常,但是当有两个相同的图像时,它会发生错误。 我认为这是因为它都指向相同的原始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--; 
} 

回答

0

我怀疑这是你的问题在这里,但imageNamed:在内存中缓存图像与内部缓存系统。每当你要求[UIImage imageNamed:@"foo"]时,你都会得到相同的UIImage实例。

您可能想要使用imageWithContentsOfFile:而不是它返回唯一的UIImage实例。

试试看看它是否有所作为。

+0

这表明奇怪的错误。就在我上面的代码之前,我将mainview添加到屏幕上,例如“[self.view insertSubview:photoViewCon.view atIndex:0];”。在第二次尝试添加图像之后,它会冻结该点。 – user842589

0

,如果你只需要删除最近添加的图片 那么每个在其中添加映像存储其参考这样的时刻 - 它会与ARC工作得很好......

UIImageView *imageView = touchImageView; 

然后在您删除最近添加图片按钮,点击的

for(UIImageView *iV in view.subviews) 
{ 
    if(iV == imageView) 
    { 
     [iV removeFromSuperView]; 
    } 
} 

我认为这将工作...