2014-10-06 3 views
0

NSURLRequest를 사용하여 초당 수백 개의 HTTP 요청을 보내는 iOS 앱이 있습니다. 성능이 좋은, 그래서 그것은 WiFi를 통해 항상, 내가 NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData를 통해 장애인 캐싱을했습니다, 그래서 내용이 모든 응답에 대한 다른 :캐시에 NSURLRequest 쓰기를 중지하십시오.

let request = NSURLRequest(URL: requestURL, 
     cachePolicy: .ReloadIgnoringLocalCacheData, timeoutInterval: 0.1) 

그러나, NSURLRequest 여전히 디스크에 데이터를 기록한다 - 단지에서 수백 메가 바이트 몇 분.

이것은 내 응용 프로그램이 데이터 모니터링을 위해 한 번에 여러 시간 동안 실행될 수 있기 때문에 특히 중요합니다. NSURLRequest가 초당 디스크를 수백 번 쓰고 있습니다 ... 플래시 메모리가 손상 될 수 있습니다. 이러한 조건 하에서는 비록 평평함을 입었다 고 가정하더라도.

NSURLRequest이 캐시 데이터를 디스크에 쓰지 않게하려면 어떻게해야합니까?

답변

1

NSURLRequest의 캐시 정책은 다운로드 한 데이터를 기록할지 여부와 캐시를 읽는 방법 만 제어합니다.

NSURLRequestNSURLSession을 사용하는 경우에는 URLSession(_:dataTask:willCacheResponse:completionHandler:) 메서드를 대리자에 구현하고 nil 인수로 completionHandler를 호출하십시오.

NSURLConnection을 사용하는 경우 유사한 위임자 호출이 작동합니다. 자세한 내용은 this question을 참조하십시오.

+0

감사합니다. 이렇게하면 한 줄의 코드를 약 40 줄의 코드로 변경해야합니다. 요청을 보내는 블록 기반 API는 델리게이트가있는 경우 사용할 수 없으며 델리게이트 API는 NSMutableData 객체 생성과 같은 작업을 수행해야합니다. 완성 된 메시지를 얻으십시오. 더 쉬운 방법이 있어야하는 것처럼 보입니다. : - / –