2009-08-11 5 views
0

나는 나의 질문을 견디기 위해 내 응용 프로그램의 작업을 간략하게 설명했다.아이폰의 이미지 캐싱 문제

1600 개가 넘는 이미지가 iPhone 응용 프로그램 문서 디렉토리에 저장되는 응용 프로그램이 있습니다. 다음과 같이 주 화면에 tableView가 있습니다. => 첫 번째 범주 => 두 번째 범주 => 세 번째 범주는

=> 사용자가 먼저 카테고리를 선택하면

, 이미지가
처럼 내있는 ScrollView
에로드 | ----------- --------- 페이지 뷰 컨트롤러 ----------------- |
| 첫 번째 이미지 | 두 번째 이미지 | 세 번째 이미지 | 네 번째 이미지 |
| -------------------- 페이지 뷰 컨트롤러 ----------------- |

카테고리를 선택한 후, 사용자가 볼 수있는 - 다른 이미지를 볼 수있는 권리가 있지만, 한 번에 사용자가 볼 수 있습니다 - & 다른 사람이 이미 페이지 뷰 컨트롤에로드 된 페이지 뷰 컨트롤러에서 첫 번째 이미지, 사용자는 단지 왼쪽으로 스크롤합니다 하나 개의 이미지 만.

지금 각 페이지

이 모든 일들이,

완벽하게 작동 (그래서 사용자가 밖으로 확대 할 수 있습니다) 스크롤 뷰에 배치 이미지보기가 있습니다 (즉, 페이지 뷰 컨트롤의 작업입니다)

문제 다음 상황에서 발생합니다.
= "제 카테고리의 영상을 시청 한 후
=> 사용자 프레스 위로
=> 이제 사용자 은 두 번째 범주의 모든 이미지가 페이지보기 설정 제어에로드 볼 번째 범주를 선택한다.

iPhone은 주어진 상황에서 응용 프로그램을 종료합니다. (이 페이지 뷰 컨트롤에 모든 이미지를로드 할 수) (각각의 이미지은이다에 - 적어도 4메가바이트 약.)

아이폰 시뮬레이터는 이러한 상황에 완벽하게 작동하지만 아이폰은 '아무튼 t. iPhone은 주어진 상황에서 응용 프로그램을 종료합니다.

iPhone에 메모리 캐싱 문제가있을 수 있습니다.

질문이 문제를 해결하는 방법은 무엇입니까?

나를 도와 주셔서 미리 감사드립니다.

답변

1

메모리에 문제가있어 사진을 더 잘 관리하고 사용하지 않을 때는 메모리에서 손을 떼야합니다.이

PIC ActivePic 그림 또는 ActivePic 그림 같은 것을 알면이 때문에 스크롤 뷰를 들어 가장 세에, 한 번에 부하를 모든 이미지를로드 해달라고, 이것은 당신이 필요한 모든 것입니다, 내가 세 가지를 말하는 이유는 - 여기 만 필요 2

사용자가 스크롤을 클리핑 할 때 발생하지 않도록 활성 그림의 양쪽에 그림을로드합니다. 당신이 스크롤보기에 있지 않을 때 당신이 만료 된 것처럼 메모리가 부족한 경우 모든 이미지를 해제해야합니다. PageControl 샘플 프로젝트 http://developer.apple.com/iphone/library/samplecode/PageControl/을 보시고 여기에서 위에서 설명한 것과 같은 방식으로 스크롤 뷰의 뷰를 관리합니다.

+0

@ 대니얼 - 미안하지만, 내 질문이 조금 바뀌고 있습니다. –

+0

사진의 해결책은 무엇입니까? – Daniel

+1

당신은 여전히 ​​다른 이미지를 제대로 공개하지 않을 수 있거나, 해상도가 너무 높은 이미지를 사용하고 있는지, 320x480 또는 480x320으로 축소해야하는지 등을 확인해야하는 메모리가 여전히 실행 중입니다. 그들이 이미 1600x1400과 같은 것이면 앱을 크래시 할 것입니다. – Daniel