我的应用程序有一个问题,它的代码太长,无法进入,但当我删除UIView并用新的UIView替换它时,就足够说了,如下所示:
NSLog(@" .. %@", (Icon *)[self viewWithTag:index]);
Icon *icon = (Icon *)[self viewWithTag:index];
CGRect frame = icon.frame;
int tag = icon.tag;
[icon removeFromSuperview];
[icon release];
Icon *icon2 = [[Icon alloc] init];
icon2.frame = frame;
[icon2 makeIconStandardWithTag:(int)tag];
[self addSubview:icon2];
它做了一些奇怪的事情,第一次NSLog(因为视图已经在那里了)显示对象是一个图标,但在运行此代码后的第二次显示,由于某种原因,它现在是一个UIImageView,并且它在屏幕上的某个奇怪位置显示了我认为是原始图标的东西。这是非常不稳定的行为。但我所知道的是:
正在删除[icon removeFromSuperview];行,尽管将对象保留在那里,但它停止了这种行为,并导致NSLog返回一个Icon,这是应该的。
所以我的猜测是,它并没有正确删除图标。有没有一种方法可以完全删除图标,或者是尽我所能从Superview中删除。我所能做的只是将其设置为alpha=0,但这更像是一个补丁式的解决方案,而不是我想要的解决方案。