我發佈了一個圖像[myimageview.image release];iphone對象c是已發佈對象
但是在應用程序在後臺後它再次出現前景,它再次釋放該圖像,所以它崩潰!我所有的嘗試來檢查應用程序是否來自背景沒有奏效。 那麼我怎麼能檢查一個對象是否已經發布..所以我不這樣做兩次?
thankx 克里斯
編輯 經過多次抱怨我的壞編碼:)這裏一個例子:
首先,我初始化路徑數組來了很多全屏圖像 也有10左右10種不同場景的不同陣列。 當我直接將圖像放入數組中時,它只需要從一開始就記憶很多內存,或者當我釋放一個場景時,它需要重新加載整個圖像數組,並且速度變慢。所以我只是將圖像的路徑加載到數組中,並在運行時將每個圖像循環分配給我的圖像視圖。
初始化一次: imageArray_stand = [[NSArray中的alloc] initWithObjects: @ 「FrankieArmeRaus_0001.jpg」, ...直到60個圖像 @ 「FrankieArmeRaus_0061.jpg」,零]。
在循環多數民衆贊成所謂的每1/10秒:
if ([myimageview.image retainCount] > 1)
//if (myimageview.image != nil) // does not work = crash
{
[myimageview.image release];
myimageview.image = nil;
}
myimageview.image = [UIImage imageNamed:[imageArray_stand2 objectAtIndex:piccounter-1]];
問題就來了,因爲當應用程序進入後臺,比到前臺再次似乎釋放圖像的2倍,所以我需要一個解決方案來檢查。
我很高興任何解決方案(只是現在它的工作),這更好。 即使將所有圖像完整地加載到數組中,但如前所述,它需要很多內存並在運行時需要很長時間加載時重新指定。 (1秒爲50圖像)
此外我需要RELASE並設置爲NIL,因爲否則它甚至會使我的內存使用超出限制。
沒有工作..現在解決它: if([myimageview.image retainCount]> 1)[myimageview.image release]; – 2010-08-15 21:21:02
使用'retainCount'是個壞主意。它只能用於調試,而不能用於實際的程序邏輯,因爲它不一定代表保留對象的實際數量。你在做什麼可能看起來有效,但它不能保證工作。 – 2010-08-15 21:24:00