1

글쎄, 메모리 관리가 나를 미치게합니다! 나는 이미지에 n 개의 참조와 PLIST를메모리 경고없이 여러 로컬 이미지로드

:

여기 내 문제입니다. 내가하고 싶은 것은 각 자식을 잡고 UIImageView에로드하는 것입니다.이 호출은 페이징이 활성화 된 UIScrollView에 추가됩니다.

내 문제 :

  • 나는 N 이미지를 가지고있다. 단 3 일 수 있지만 60 일 이상이 될 수 있습니다.
  • 각 이미지는 확대/축소 가능하기 때문에 상당한 해상도 (1152x1536)를 갖습니다.

나는 CATiledLayer에 대해 읽었고 PhotoScroller 샘플을 보았지만 이미지 조각을 보여주는 동안 페이드 인을 생성하고 그 효과는 적합하지 않기 때문에 CATiledLayer를 사용하지 않는 것이 좋습니다.

나는 당신의 의견을 듣고 싶습니다. 어떻게 이런 종류의 작업을 보통 해결합니까?

여기 내 코드의 조각을 떠날 것이다 :

UIImage * image; 
UIImageView * imageview; 

for (int i = 0; i < [data count]; i++) 
{ 
    image = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", 
                [[NSBundle mainBundle] bundlePath], 
                [[data objectAtIndex:i] objectForKey:@"content"]]]; 

    [content addObject:image]; 

    imageview = [[UIImageView alloc] initWithImage: [content objectAtIndex:i] ]; 
    [imageview setTag:i+10]; 
    imageview.frame = CGRectMake(1024 * i, 0, 1024, 768); 

    [scroll addSubview: imageview]; 

    [imageview release]; 
    [image release]; 
} 

[scroll setContentSize:CGSizeMake(1024*[data count], 768)]; 

이 코드는 내가 예를 들어 60 개 이미지를로드 할 때 응용 프로그램이 메모리 경고가 표시합니다.

아이디어를 얻은 것 같습니다.

제안 사항?

미리 도움을 주셔서 감사합니다.

답변

3

메모리 문제가 발생하지 않도록하려면 필요할 때만 한꺼번에 메모리를로드하면 안됩니다. 이것을 달성하기 위해 사과가 제공하는 예제 인 here을 따라갈 수 있습니다.

기본적으로 지금하는 이미지와 오른쪽과 왼쪽에있는 이미지의 세 이미지 만로드하면됩니다. 그런 다음 스크롤 할 때 오른쪽으로 말하면 이전에 왼쪽에 있던 것을 제거하고 오른쪽 끝에 새 이미지를 놓습니다.

+0

정말 고마워요. 나는 한 번해볼 게요. –