2013-02-17 68 views
-2

在我的應用程序中,內存問題有點問題。
我的編碼技能還不夠完善。
我的代碼使用內存四次,我真的需要。
我該如何更改我的編碼?如何將圖像名稱添加到數組中?

我的代碼是

-(void)viewDidAppear:(BOOL)animated 
{ 
UIScrollView * ScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 44, self.view.frame.size.width, self.view.frame.size.height-88)];// 44(UpperNavigtionBar),-88(Upper+Lower) 
ScrollView.pagingEnabled = YES; 

// Create a UIImage to hold Info.png 
UIImage *image1 = [UIImage imageNamed:@"Image-001.jpg"]; 
UIImage *image2 = [UIImage imageNamed:@"Image-002.jpg"]; 
UIImage *image3 = [UIImage imageNamed:@"Image-003.jpg"]; 
UIImage *image4 = [UIImage imageNamed:@"Image-004.jpg"]; 
UIImage *image5 = [UIImage imageNamed:@"Image-005.jpg"]; 
UIImage *image6 = [UIImage imageNamed:@"Image-006.jpg"]; 
UIImage *image7 = [UIImage imageNamed:@"Image-007.jpg"]; 
UIImage *image8 = [UIImage imageNamed:@"Image-008.jpg"]; 
UIImage *image9 = [UIImage imageNamed:@"Image-009.jpg"]; 
UIImage *image10 = [UIImage imageNamed:@"Image-010.jpg"]; 
UIImage *image11 = [UIImage imageNamed:@"Image-011.jpg"]; 
UIImage *image12 = [UIImage imageNamed:@"Image-012.jpg"]; 
UIImage *image13 = [UIImage imageNamed:@"Image-013.jpg"]; 

NSArray *images = [[NSArray alloc] initWithObjects:image1,image2,image3,image4,image5,image6,image7,image8,image9,image10,image11,image12,image13,nil]; 


NSInteger numberOfViews = 13; 
for (int i = 0; i < numberOfViews; i++) 
{ 
    CGFloat xOrigin = i * self.view.frame.size.width; 

    UIImageView * ImageView = [[UIImageView alloc] initWithFrame:CGRectMake(xOrigin, 0, self.view.frame.size.width, self.view.frame.size.height-88)]; // -88(Upper+Lower) 
    [ImageView setImage:[images objectAtIndex:i]]; 

    [ScrollView addSubview:ImageView]; 
}  
ScrollView.contentSize = CGSizeMake(self.view.frame.size.width*numberOfViews, self.view.frame.size.height-88); // -88(for adding Image View as subview) 
[self.view addSubview:ScrollView]; 
} 
+0

您是如何確定您的代碼正好使用它所需內存四倍的? – 2013-02-17 15:01:11

+0

@ H2CO3,首先,我製作了13個圖像對象。其次,將這些對象添加到數組中。第三,將圖像添加到圖像視圖中。第四,將圖像視圖添加到滾動視圖。那是我認爲的H2CO3。我如何更改我的代碼? – 2013-02-17 15:05:15

+3

對不起,如果這聽起來很刺耳,但我認爲你應該'梳理'你的基本知識。這些對象通常是通過引用傳遞的,只有通過值傳遞給它的指針,所以你的編號根本沒有意義。 (這適用於很多語言) – 2013-02-17 15:07:25

回答

1

有幾件事情可以做,以限制你的內存使用情況。首先,你應該爲陣列填充圖像的名稱,而不是圖像本身。鑑於你的圖像被命名的方式,你應該能夠在一個循環中做到這一點。其次,在加載圖像時,使用imageWithContentsOfFile:而不是imageNamed :.後一種方法緩存圖像,而前者則不。如果您使用imageNamed:由於緩存的緣故,當您滾動瀏覽圖像時(即使進行延遲加載),內存使用量將繼續增加 - 在某些時候系統應清除緩存,這會使應用程序崩潰,但我不會不認爲它會保持系統關閉設備後臺的其他程序。

+0

對不起,我的答覆,感謝您的幫助。現在,我說第一種方式。我將圖像名稱存儲到數組中。現在,我的應用程序可以運行內存管理。非常感謝。 – 2013-02-20 00:05:12

相關問題