캐싱하지 않고 URL에서 NSImage
을로드하는 방법은 무엇입니까? 원격 소스에서 항상 다시로드해야합니다. 그러나 인터넷에 연결되어 있지 않아도 유효한 이미지로 끝납니다. 캐시 모드를 이미로드 된 이미지로 설정해도 아무런 효과가 없습니다. 나는 놀이터에서이 코드를 실행하면NSImage를 캐싱하지 않는 방법 byReferencingURL
let url = NSURL(string: "http://thecybershadow.net/misc/stackoverflow.png")
let img = NSImage(byReferencingURL: url!)
img.cacheMode = NSImageCacheMode.Never
NSLog("Found image with size \(img.size)")
, 그것은 실제로 결코 내가 NSImageCacheMode.Always
을 설정 한 경우에도, 캐시하지 않습니다.
그러나 응용 프로그램에서이 스 니펫을 실행하면에 연결되어 있지 않아도 항상 유효한 이미지 인 을 반환합니다.
난 그냥 난수 또는 타임 스탬프와 함께 캐시 버스터 매개 변수를 사용할 수 있습니다. 그러나 이것은 이론적 인 질문이며, 우선 캐싱을 방지하는 방법에 관심이 있습니다.
그래,이게 효과가있을거야. 이미지와 병행하여'NSData dataWithContentsOfURL'을 통해 XML 파일을로드하고 있는데 이것은 머신이 오프라인 일 때'nil'을 리턴합니다. 그래서 이미지와도 잘 맞아야합니다. 그러나이 방법은 URL에 "캐시 버스터 (cache buster)"매개 변수를 추가하는 것과 같은 해결 방법입니다. URL에서로드 할 때 이미지가 첫 번째 위치에 캐시되는 것이 놀랍습니다. 'cacheMode'는 무엇에 좋은가요? 이미지가로드 된 후에 설정하면 효과가 없습니다. 이미 캐시되어 있지만 URL에서로드하기 전에 어떻게 설정합니까? – udondan
그래, cacheMode가 다음에 캐시를 제거하지 않는다면 나는 API가 이해가 안된다는 것에 완전히 동의한다. 제 경우에는 문제가 480x680으로 가정되는 수백 개의 이미지 중 일부가 훨씬 작은 크기로 되돌아 왔지만 DPI가 더 높았습니다. 실제 픽셀 크기 대신 작은 크기로 렌더링되었습니다 (올바른 것으로 판명 됨). – owenfi