我有一個iPad的應用程序,這是兒童書。通過調用這個動作可以從一個頁面導航到下一個頁面,這個動作必須淡出當前頁面並在下一頁中淡出,然後用NSArray的下一行填充三個堆棧UIImageView,以便完成操作下一頁:內存泄漏警告,由於NSArray的大圖像
-(void)loadPages
{
thePages = [[NSArray alloc] initWithObjects:
// How many stacked images do we need to get fade in and outs? Also add column fo
@"page0",@"page0",@"page1",
@"page0",@"page1",@"page2",
@"page1",@"page2",@"page3",
@"page2",@"page3",@"page4",
@"page3",@"page4",@"page5",
@"page4",@"page5",@"page6",
@"page5",@"page6",@"page7",
@"page6",@"page7",@"page8",
@"page7",@"page8",@"page9",
@"page8",@"page9",@"page10",
@"page9",@"page10",@"page11",
@"page10",@"page11",@"page12",
@"page11",@"page12",@"page13",
@"page12",@"page13",@"page14",
@"page13",@"page14",@"page15",
@"page14",@"page15",@"page16",
@"page15",@"page16",@"page17",
@"page16",@"page17",@"page18",
@"page17",@"page18",@"page19",
@"page18",@"page19",@"page20",
@"page19",@"page20",@"page21",
@"page20",@"page21",@"page22",
@"page21",@"page22",@"page23",
@"page22",@"page23",@"page24",
@"page23",@"page24",@"page25",
@"page24",@"page25",@"page26",
@"page25",@"page26",@"page27",
@"page26",@"page27",@"page27",
nil];
}
,當我開始得到內存這一切都工作得很好,直到大約10-12th頁:
-(void)delayedMethod{
[leftButton setAlpha:1];
[pageImageNext setAlpha:0];
[pageImage setAlpha:1];
[pageImageBack setAlpha:1];
NSString *imageExtension = @".jpg";
NSString *audioExtension = @".wav";
if (activePage == thePages.count/3)
{
activePage = 1;
}
else
{
activePage = activePage + 1;
}
NSInteger row = 0;
if(activePage == 0)
{
row = activePage;
}
else
{
row = ((activePage) * 3);
}
[leftButton setAlpha:1];
pageImageBack.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@%@", [thePages objectAtIndex:row+0], imageExtension]];
pageImage.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@%@", [thePages objectAtIndex:row+1], imageExtension]];
pageImageNext.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@%@", [thePages objectAtIndex:row+2], imageExtension]];
[UIImageView beginAnimations:NULL context:NULL];
[UIImageView setAnimationDuration:.5]; // you can set this to whatever you like
/* put animations to be executed here, for example: */
[leftButton setAlpha:0];
[rightButton setAlpha:0];
[leftButton setAlpha:1];
[rightButton setAlpha:1];
leftButton.hidden = NO;
/* end animations to be executed */
[UIImageView commitAnimations]; // execute the animations listed above
[imageExtension release];
}
的NSArray的是這個動作,這就是所謂的viewDidLoad中加載在控制檯中發出警告並且通常會發生崩潰。
我非常確定這只是在正確的時間釋放三個大UIImageViews的問題,但我無法弄清楚什麼時候......我已經在代碼中嘗試了許多不同的點。
感謝提示傢伙,我相信我有我的代碼中的所有這些項目,但它仍然給我的問題。我的dealloc是: - (void)dealloc { \t \t [pageImage release]; \t [pageImageBack release]; \t [pageImageNext release]; \t [thePages release]; \t [leftButton release]; \t [rightButton release]; \t [splashView release]; \t \t thePages = nil; \t [super dealloc]; } – Gabe 2011-06-13 13:53:57
並在我的.h文件中我列出了像UIImageViews:@property(nonatomic,retain)IBOutlet UIImageView * pageImage; @property(nonatomic,retain)IBOutlet UIImageView * pageImageBack; @property(nonatomic,retain)IBOutlet UIImageView * pageImageNext;正如Yazu所建議的那樣,我也刪除了圖像擴展版本。在到達第9-15行後仍然會出現內存警告和崩潰......當我從一行移動到另一行時,是否需要釋放UIImageView而不是僅僅在(void)dealloc中?或者我需要在另一個時間調用(void)dealloc? – Gabe 2011-06-13 13:57:56
此外,我似乎在控制檯中得到這條消息時,它會崩潰,我相信它指向一個內存問題:程序接收到的信號:「0」。 數據格式化程序暫時不可用,將在「繼續」後重新嘗試。 (未知錯誤加載共享庫「/Developer/usr/lib/libXcodeDebuggerSupport.dylib」) – Gabe 2011-06-13 14:13:23