2012-08-30 2 views
2

iOS에서 웹 서버의 데이터를로드하는 데는 NSURLConnection이 필요합니다. 단지 PNG 파일입니다.iOS에서 NSURLConnection을 사용할 때 더 큰 파일 (1MB)을 캐시하는 방법은 무엇입니까?

크기가 1,173,084 바이트 인 하나의 파일 (약 1MB)을 제외하고 모든 파일은 캐시됩니다.

6 개의 파일을 반복합니다 : pic1.png, pic2.png, ... 3, 4, 5, 6, 1, 2, 3 등 ... 파일 크기는 1MB, 650kb입니다. , 450kb 및 몇몇 더 작은 파일.

iPad 시뮬레이터에서 테스트 중이므로 메모리는 문제가되지 않습니다. touchesBegan

[[NSURLCache sharedURLCache] setMemoryCapacity:15 * 1024 * 1024 ]; 
[[NSURLCache sharedURLCache] setDiskCapacity:20 * 1024 * 1024 ]; 

NSLog(@"Memory Cache capacity is %i", [[NSURLCache sharedURLCache] memoryCapacity]); 
NSLog(@"Disk Cache capacity is %i", [[NSURLCache sharedURLCache] diskCapacity]); 

NSURLConnection를 만들었습니다 :이

이미 viewDidLoad에서 수행 된 다음

NSURLConnection *connection = [NSURLConnection connectionWithRequest:request 
            delegate:self]; 

캐시 크기는 전체 파일보다 훨씬 큰 15메가바이트 및 20메가바이트이다 크기는 약 3.2MB입니다. 다운로드가 거의 즉시 완료되면 1MB 파일이 많은 connection:didReceiveData과 마지막으로 connectionDidFinishLoading을 통과하는 동안 파일이 캐싱되는 것을 볼 수 있습니다.

+0

살펴 http://stackoverflow.com/questions/12565740/nsurlconnection-timing-out-on-ios이 -6-but-not-on-ios-5 – samar

답변

0

NSURLCache에는 캐시 할 파일을 결정하기위한 메가 니즘이 있습니다. 최대 파일 크기는 캐시의 크기와 관련이 있습니다. DiskCapacity를 200MB로 설정하십시오. 캐시 될 최대 파일 크기도 증가하는 것을 볼 수 있습니다. 이 문제를 해결할 수있는 유일한 방법은 고유 한 NSUrlCache를 구현하는 것입니다. 당신이 수행하는 방법 샘플을 찾고 있다면, 나는이 당신에게 도움이 될 것입니다 생각 https://github.com/evermeer/EVURLCache