let memoryCapacity = 200 * 1024 * 1024
let diskCapacity = 1 * 1024 * 1024
let cache = URLCache(memoryCapacity: memoryCapacity, diskCapacity: diskCapacity, diskPath: "myDataPath")
URLCache.shared = cache
시나리오 1urlcache의 메모리와 디스크에서 정확히 일들이 제거 되나요?
나는 200메가바이트에의 Urlcache의 메모리를 설정하고 1메가바이트에 디스크 공간을 설정하고있다. 그런 다음 이미지를 다운로드합니다. 인터넷을 끄고 응용 프로그램을 종료하고 응용 프로그램을 다시 실행하고 다시 실행 한 다음 이미지를 다운로드하려면 호출을 실행하십시오. data
은 nil
입니다.
인터넷을 끄면 말할 필요도없이 캐시에서 예상대로 읽었을 때 크래시가 발생하지 않습니다. 내가 캐시가 메모리에서 플러시 경우에도 다음 200메가바이트에 diskCapacity (let diskCapacity = 200 * 1024 * 1024
) 을 설정하면
시나리오 2
, 여전히 이미지가 디스크에 유지됩니다; 그것은 항상 보여줄 것입니다! 이러한 관찰을 바탕으로
, 나는 다음과 같은 질문이 있습니다 때문에 메모리 경고/문제에
- 그것이 올바른 말을하는 것입니다, 당신이 강제 종료 할 때마다 또는 앱 충돌 캐시를 얻을 것이다 플러시되었지만 디스크가 손상되지 않았습니다.
- 캐시가 메모리에서 플러시 될 수있는 다른 이유는 무엇입니까?
- 디스크에 저장된 내용을 언제 제거 할 수 있습니까?
정말 고마워요. "영구 저장소에서 장치의 실행이 부족할 때"에 대한 콜백이 없습니까? – Honey
내가 아는 바가 없다. – Rob