我有我的應用程序有問題,其中對於該代碼是太長了進入,但我只想當我取出一個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返回一個圖標,因爲它應該。
所以我的猜測是它不能正確刪除圖標。有沒有辦法完全刪除圖標,或者是我可以去的removeFromSuperview。我能做的只是將它設置爲alpha = 0,但這更多的是修補解決方案,而不是我想如何解決它。
謝謝。雖然這還沒有解決我的問題(這個問題與將它從超級視圖中移除有關),這使我向前邁進了一步。 – Andrew 2011-05-23 18:59:58
這只是防止你無意中發送消息給非零但釋放的對象。這在Garbage Collected環境中很有用,但不會在iOS上更快地發佈該對象。 – Abizern 2011-05-23 19:00:21