사과
  • 애플 개발자 문서 한글 번역
  • App Frameworks
    • Foundation
      • 숫자, 데이터와 기본값
      • 문자열과 텍스트
      • 컬렉션
      • 날짜와 시간
      • 데이터 포맷
      • 작업 관리
        • Operation
        • OperationQueue
        • Timer
      • 리소스
        • Bundle
      • 파일 시스템
        • FileManager
      • Notification
        • NSKeyValueObserving
      • URL 로딩 시스템
        • 웹사이트 데이터를 메모리에 저장하기
        • URLSession
          • URLSessionConfiguration
            • urlCache
            • requestCachePolicy
          • configuration
        • URLSessionTask
        • URLRequest
        • URLResponse
        • HTTPURLResponse
        • 캐시 데이터에 접근하기
        • CachedURLResponse
        • URLCache
      • Object Runtime
        • NSValue
    • UIKit
      • UIKit으로 앱 개발
      • 앱과 환경
        • 앱 라이프 사이클 관리하기
        • 앱 실행에 대응하기
        • UIApplication
      • 문서, 데이터와 클립보드
      • Mac Catalyst
        • iPad 앱을 Mac 버전으로 만들기
        • 아이패드 앱의 맥 최적화
      • 뷰와 컨트롤
        • UIView
        • Table Views
          • UITableView
          • UITableViewCell
          • UIRefreshControl
        • UIScrollView
      • View Controllers
        • UIViewController
        • UITableViewController
        • UISearchController
      • 애니메이션과 햅틱
        • 프로퍼티 기반 애니메이션
          • UIViewPropertyAnimator
        • View controller 전환
      • 터치, 누르기, 제스처
        • UIResponder
        • UIKit 제스처 처리
        • 다중 제스처 인식기 조정
        • UILongPressGestureRecognizer
        • UIPanGestureRecognizer
          • maximumNumberOfTouches
          • minimunNumberOfTouches
          • translation(in:)
          • setTranslation(_:in:)
          • velocity(in:)
        • UIGestureRecognizer
    • Swift
      • 스위프트 표준 라이브러리
        • 메모리 직접 관리
          • 포인터 파라미터를 사용하는 함수 호출
          • UnsafePointer
          • UnsafeMutableRawBufferPointer
    • SwiftUI
      • 뷰와 컨트롤
        • View
        • Text
        • TextField
      • 뷰 레이아웃과 표현
      • 그리기와 애니메이션
      • 프레임워크 통합
      • 상태와 데이터 흐름
  • Graphics and Games
    • Core Animation
      • CALayer
      • CAAction
      • CAShapeLayer
      • CADisplayLink
    • Core Graphics
      • CGFloat
      • CGPath
  • App Services
    • Combine
    • WebKit
      • WKWebView
  • Media
    • AVFoundation
      • 시스템 오디오 상호작용
        • AVAudioSession
          • AVAudioSession.Category
            • ambient
            • multiRoute
            • playAndRecord
            • playback
            • record
            • soloAmbient
          • AVAudioSession.Mode
      • AVFoundation 자료형
  • Documentation Archive
    • 번들 프로그래밍 가이드
      • 번들에 대해
      • 번들 구조
    • Key-Value Observing 프로그래밍 가이드
    • Threading 프로그래밍 가이드
      • About Threaded Programming
      • Thread Management
  • ETC
    • Not Found
Powered by GitBook
On this page
  • Declaration
  • Summary
  • 개요
  • 스레드 안전성
  • Subclassing Notes
  • 주제
  • 공유 캐시 읽고 쓰기
  • 새 캐시 객체 생성
  • 캐시 객체 읽고 저장하기
  • 캐시 객체 삭제
  • 온 디스크 캐시 속성 읽고 쓰기
  • 캐시 스토리지 정책
  • 관련 문서
  • 상속받은 대상
  • 준수하는 프로토콜
  • 같이 보기
  • 캐시 동작
  1. App Frameworks
  2. Foundation
  3. URL 로딩 시스템

URLCache

URL 요청을 캐시된 응답에 매핑시키는 객체

PreviousCachedURLResponseNextObject Runtime

Last updated 5 years ago

원문 출처

Declaration

class URLCache : NSObject
@interface NSURLCache : NSObject

Summary

SDKs

  • iOS 2.0+

  • macOS 10.2+

  • Mac Catalyst 13.0+ Beta

  • tvOS 9.0+

  • watchOS 2.0+

Framework

  • Foundation

개요

URLCache 클래스는 객체를 객체에 매핑함으로써 URL load 요청에 대한 응답의 캐싱을 구현합니다. 또한 인메모리 및 디스크에 저장된 캐시를 제공하며 각 캐시의 크기를 모두 조절할 수 있고 캐시 데이터가 영구적으로 저장될 경로를 제어할 수 있습니다.

Note

iOS에서는 시스템 디스크 공간이 부족할 경우 앱이 실행중이지 않을 때 디스크에 저장된 캐시를 삭제할 수 있습니다.

스레드 안전성

iOS 8, macOS 10.10 이상에서 URLCache는 스레드 안전합니다.

URLCache 인스턴스 메서드들이 여러 실행 컨텍스트에서 호출되더라도 스레드 안전하기는 하지만, cachedResponse(for:)와 storeCachedResponse(_:for:)와 같은 메서드가 같은 요청에 대한 응답을 동시에 읽고 쓰려고 한다면 경쟁상태(race condition)를 피할 수 없으므로 조심해야 합니다.

URLCache의 서브 클래스들은 반드시 이러한 상황에서 스레드 안전하게 동작할 수 있도록 메서드를 오버라이드하여 구현해야 합니다.

Subclassing Notes

URLCache 클래스는 있는 그대로 사용되도록 만들어졌지만 캐시가 필요한 응답을 가려내려 하거나, 보안상의 이유로 저장 메커니즘을 재구현 하려는 등 특정한 경우에는 서브클래싱 할 필요가 생길수도 있습니다.

이 클래스의 메서드를 오버라이드 할 경우, 시스템이 task 파라미터를 사용하는 메서드를 그렇지 않은 메서드보다 우선시 한다는 것을 유의해야 합니다. 그러므로 서브클래싱을 할때에는 다음과 같이 task 기반의 메서드를 오버라이드 해야합니다:

주제

공유 캐시 읽고 쓰기

  • class var shared: URLCache 공유 URL 캐시 인스턴스

새 캐시 객체 생성

  • init(memoryCapacity: Int, diskCapacity: Int, diskPath: String?) Deprecated

    Creates an URL cache object with the specified values.

캐시 객체 읽고 저장하기

  • func cachedResponse(for: URLRequest) -> CachedURLResponse? 지정된 URL 요청에 대한 캐시된 URL 응답을 반환합니다.

  • func storeCachedResponse(CachedURLResponse, for: URLRequest) 지정된 URL 요청에 대한 캐시된 URL 응답을 저장합니다.

  • func getCachedResponse(for: URLSessionDataTask, completionHandler: (CachedURLResponse?) -> Void) data task에 대한 캐시된 URL 응답을 읽어서 completion handler로 전달합니다.

  • func storeCachedResponse(CachedURLResponse, for: URLSessionDataTask) 지정된 data task에 대한 캐시된 URL 응답을 저장합니다.

캐시 객체 삭제

  • func removeCachedResponse(for: URLRequest) 지정된 URL 요청에 대한 캐시된 URL 응답을 삭제합니다.

  • func removeCachedResponse(for: URLSessionDataTask) 지정된 data task에 대한 캐시된 URL 응답을 삭제합니다.

  • func removeCachedResponses(since: Date) 지정된 날짜 이전의 모든 캐시된 응답을 삭제합니다.

  • func removeAllCachedResponses() 수신자의 저장된 모든 캐시된 URL 응답을 삭제합니다.

온 디스크 캐시 속성 읽고 쓰기

  • var currentDiskUsage: Int 온 디스크 캐시의 현재 크기를 바이트 단위로 나타냅니다.

  • var diskCapacity: Int 온 디스크 캐시의 가용 용량을 바이트 단위로 나타냅니다.

캐시 스토리지 정책

관련 문서

상속받은 대상

  • NSObject

준수하는 프로토콜

  • CVarArg

  • Equatable

  • Hashable

  • NSCopying

  • NSSecureCoding

같이 보기

캐시 동작

응답을 캐시로 저장할 때 — request 기반의 대신에 task 기반의 를 오버라이드하세요.

캐시에서 응답을 읽어올 때 — 대신에 를 오버라이드하세요.

캐시된 응답을 삭제할 때 — request 기반의 대신에 task기반의 를 오버라이드하세요.

enum URLCache.StoragePolicy 캐싱 전략을 지정하는 상수로써 객체가 사용합니다.

URL 요청시 캐시 데이터의 사용방식을 제어합니다.

class URL 요청에 대해 캐시된 응답

https://developer.apple.com/documentation/foundation/urlcache
NSURLRequest
CachedURLResponse
storeCachedResponse(_:for:)
storeCachedResponse(_:for:)
cachedResponse(for:)
getCachedResponse(for:completionHandler:)
removeCachedResponse(for:)
removeCachedResponse(for:)
CachedURLResponse
캐시 데이터에 접근하기
CachedURLResponse