在我的拆分視圖iPad應用程序中,默認的詳細視圖從數組中隨機加載圖像,並在用戶返回該視圖時執行此操作。該應用程序加載罰款與該視圖,我可以去另一個視圖罰款。問題是,如果我回到那個視圖,有時它會崩潰,有時它會崩潰,如果我回到默認視圖後選擇另一個視圖。當我運行泄漏工具時,我沒有顯示任何泄漏,並且每次發生崩潰時都不會在日誌中顯示任何內容。我確實收到了「接收到的內存警告」記錄,所以它的崩潰必定與某處泄漏有關,我只是不確定在哪裏。我正在使用ARC。有任何想法嗎?收到內存警告iOS
這裏是我的viewDidLoad方法:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIImage *agelity = [UIImage imageNamed:@"Agelity"];
UIImage *agelity2 = [UIImage imageNamed:@"Agelity2"];
UIImage *biltmore = [UIImage imageNamed:@"Biltmore"];
UIImage *biltmore2 = [UIImage imageNamed:@"Biltmore2"];
UIImage *biltmore3 = [UIImage imageNamed:@"Biltmore3"];
UIImage *choice = [UIImage imageNamed:@"Choice"];
UIImage *enterprise = [UIImage imageNamed:@"Enterprise"];
UIImage *enterprise2 = [UIImage imageNamed:@"Enterprise2"];
UIImage *grainger = [UIImage imageNamed:@"Grainger"];
UIImage *grainger2 = [UIImage imageNamed:@"Grainger2"];
UIImage *greatWolf = [UIImage imageNamed:@"Great_Wolf"];
UIImage *greatWolf2 = [UIImage imageNamed:@"Great_Wolf2"];
UIImage *officeDepot = [UIImage imageNamed:@"Office_Depot1"];
UIImage *officeDepot2 = [UIImage imageNamed:@"Office_Depot2"];
UIImage *officeDepot3 = [UIImage imageNamed:@"Office_Depot3"];
UIImage *sams = [UIImage imageNamed:@"Sams"];
UIImage *sams2 = [UIImage imageNamed:@"Sams2"];
NSMutableArray *benefitAds = [[NSMutableArray alloc]initWithObjects:agelity, agelity2, biltmore, biltmore2, biltmore3, choice, enterprise, enterprise2, grainger, grainger2, greatWolf, greatWolf2, officeDepot, officeDepot2, officeDepot3, sams, sams2, nil];
int randomIndex = arc4random() % [benefitAds count];
adImage.image = [benefitAds objectAtIndex:randomIndex];
[self configureView];
}
編輯:我試圖用使用imageWithData代替imageNamed的建議,所以我這樣做:
NSData *agelityData = [NSData dataWithContentsOfFile:@"Agelity"];
UIImage *agelity = [UIImage imageWithData:agelityData];
但現在的應用與上線發生衝突:
int randomIndex = arc4random() % [benefitAds count];
與:
Thread 1: EXC_ARITHMETIC(code=EXC_I386_DIV, subcode=0x0)
當我在我的設備,而不是在模擬器上運行它,我得到這個:
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 3051310543 beyond bounds for empty array'
編輯:我設置異常斷點,因爲我得到一個EXC_BAD_ACCESS碼= 1個錯誤。看起來應用程序在我改變細節視圖時會隨機崩潰。我想我會創建一個新的問題。
感謝您的幫助!
順便說一句,以避免模偏置,而不是'與''%結合運營商arc4random',您可能需要使用['arc4random_uniform'(http://developer.apple。 COM /庫/ MAC /文檔/達爾文/參考/手冊頁/ man3/arc4random_uniform.3.html)。但盧卡斯的回答應該解決記憶問題。 – Rob
好的,現在只需要使用imageNamed,你的文件路徑沒有被正確使用,這是一組完全不同的iOS細節...無論如何,與陣列人的建議一起去吧。我不認爲你正在釋放該陣列。 –