2013-02-17 5 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

코드에서 정확히 4 배의 메모리를 사용해야한다고 어떻게 결정 했습니까? –

+0

@ H2CO3, 첫째, 13 개의 이미지 개체를 만듭니다. 둘째, 배열에이 객체를 추가합니다. 셋째, 이미지를 이미지보기에 추가하십시오. 넷째, 이미지보기를 스크롤보기에 추가하십시오. 그것이 제 생각 인 H2CO3입니다. 내 코드를 어떻게 바꿀 수 있습니까? –

+3

가혹한 것처럼 들린다면 미안하지만 기본 지식을 '새롭게'해야한다고 생각합니다. 객체는 일반적으로 참조로 전달되고 값에 대한 포인터 만 전달되므로 숫자가 전혀 이해가되지 않습니다. (그 많은 언어 간다) –

답변

1

입니다. 먼저, 이미지 자체가 아니라 이미지 이름을 배열에 채워야합니다. 이미지의 이름이 지정되면 루프에서이 작업을 수행 할 수 있어야합니다. 둘째, 이미지를로드 할 때 imageNamed : 대신 imageWithContentsOfFile :을 사용하십시오. 후자의 방법은 이미지를 캐시하는 반면, 전자는 그렇지 않습니다. imageNamed를 사용하는 경우 : 캐싱으로 인해 이미지를 스크롤 할 때 메모리 사용량이 계속 증가합니다 (캐싱 때문에 시스템이 캐시를 제거해야하므로 어느 시점에서 앱이 충돌을 일으키지 않아도되지만 돈이 없습니다). 장치에 백그라운드로있는 다른 프로그램을 종료하는 시스템을 유지할 것이라고 생각하지 않습니다.

+0

답장을 보내 주셔서 감사합니다. 귀하의 도움에 감사드립니다. 자, 당신이 말하는 것처럼 나는 첫번째 방법을 사용합니다. 나는 배열에 이미지 이름을 저장한다. 자, 내 애플 리케이션 메모리 관리와 함께 실행할 수 있습니다. 정말 감사합니다. –

관련 문제