iOS File System

Groot·2022년 8월 24일
0

TIL

목록 보기
41/148
post-thumbnail

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 iOS File System 공식문서

📍 About the iOS File System

  • iOS 파일 시스템은 자체적으로 실행되는 앱에 맞춰져 있습니다.
  • 시스템을 단순하게 유지하기 위해 iOS 기기 사용자는 파일 시스템에 직접 액세스할 수 없으며 앱은 이 규칙을 따라야 합니다.

🔗 iOS Standard Directories: Where Files Reside

  • 보안을 위해 iOS 앱과 파일 시스템의 상호 작용은 앱의 샌드박스 디렉터리 내부 디렉터리로 제한됩니다.
  • 새 앱을 설치하는 동안 설치 프로그램은 샌드박스 디렉토리 내에 앱에 대한 여러 컨테이너 디렉토리를 생성합니다.
  • 각 컨테이너 디렉토리에는 특정 역할이 있습니다.
  • 번들 컨테이너 디렉토리는 앱의 번들(앱 실행을 담당)을 보유하는 반면 데이터 컨테이너 디렉토리는 앱과 사용자 모두에 대한 데이터를 보유합니다.
  • 데이터 컨테이너 디렉터리는 앱이 데이터를 정렬하고 구성하는 데 사용할 수 있는 여러 하위 디렉터리로 더 나뉩니다.
  • 앱은 런타임 시 iCloud 컨테이너와 같은 추가 컨테이너 디렉토리에 대한 액세스를 요청할 수도 있습니다.
  • 이러한 컨테이너 디렉터리는 파일 시스템에 대한 앱의 기본 보기를 구성합니다.

    자체 샌드박스 디렉토리 내에서 작동하는 iOS 앱

  • 앱은 일반적으로 컨테이너 디렉터리 외부에 있는 파일에 액세스하거나 파일을 생성할 수 없습니다.
  • 이 규칙의 한 가지 예외는 앱이 공용 시스템 인터페이스를 사용하여 사용자의 연락처나 음악과 같은 항목에 액세스하는 경우입니다.
  • 이러한 경우 시스템 프레임워크는 도우미 앱을 사용하여 적절한 데이터 저장소를 읽거나 수정하는 데 필요한 파일 관련 작업을 처리합니다.
  • 아래에서 샌드박스 디렉토리 내에서 더 중요한 일부 하위 디렉토리를 나열하고 의도된 용도를 설명합니다.
  • 또한 각 하위 디렉토리에 대한 추가 액세스 제한을 설명하고 해당 디렉토리의 내용이 iTunes 및 iCloud에 의해 백업되는지 여부를 나타냅니다.
  • AppName.app
    • 이것은 앱의 번들입니다. 이 디렉터리에는 앱과 모든 리소스가 포함되어 있습니다.
    • 이 디렉토리에 쓸 수 없습니다. 변조를 방지하기 위해 번들 디렉토리는 설치 시 서명됩니다.
    • 이 디렉토리에 기록하면 서명이 변경되고 앱이 실행되지 않습니다.
    • 그러나 앱 번들에 저장된 모든 리소스에 대한 읽기 전용 액세스 권한을 얻을 수 있습니다.
    • 이 디렉토리의 내용은 iTunes 또는 iCloud에 의해 백업되지 않습니다.
    • 그러나 iTunes는 App Store에서 구입한 모든 앱의 초기 동기화를 수행합니다.
  • Documents
    • 이 디렉토리를 사용하여 사용자 생성 콘텐츠를 저장합니다.
    • 이 디렉토리의 내용은 파일 공유를 통해 사용자가 사용할 수 있습니다. 따라서 이 디렉토리에는 사용자에게 노출하려는 파일만 포함되어야 합니다.
    • 이 디렉토리의 내용은 iTunes 및 iCloud에 의해 백업됩니다.
  • Documents/Inbox
    • 이 디렉터리를 사용하여 앱이 외부 엔터티에서 열도록 요청한 파일에 액세스합니다.
    • 특히 메일 프로그램은 앱과 연결된 이메일 첨부 파일을 이 디렉토리에 배치합니다.
    • 문서 상호 작용 컨트롤러는 파일을 저장할 수도 있습니다.
    • 앱은 이 디렉터리의 파일을 읽고 삭제할 수 있지만 새 파일을 만들거나 기존 파일에 쓸 수는 없습니다.
    • 사용자가 이 디렉터리의 파일을 편집하려고 하면 앱은 변경하기 전에 디렉터리 밖으로 파일을 자동으로 이동해야 합니다.
    • 이 디렉토리의 내용은 iTunes 및 iCloud에 의해 백업됩니다.
  • Library
    • 이 디렉토리는 사용자 데이터 파일이 아닌 모든 파일의 최상위 디렉토리입니다.
    • 일반적으로 여러 표준 하위 디렉터리 중 하나에 파일을 넣습니다. iOS 앱은 일반적으로 Application Support 및 Caches 하위 디렉토리를 사용합니다. 그러나 사용자 지정 하위 디렉터리를 만들 수 있습니다.
    • 사용자에게 노출되고 싶지 않은 파일에는 라이브러리 하위 디렉토리를 사용하십시오. 앱은 사용자 데이터 파일에 이러한 디렉터리를 사용해서는 안 됩니다.
    • 라이브러리 디렉토리의 내용(Caches 하위 디렉토리 제외)은 iTunes 및 iCloud에 의해 백업됩니다.
  • tmp
    • 이 디렉토리를 사용하여 앱 실행 간에 지속할 필요가 없는 임시 파일을 작성합니다.
    • 앱은 더 이상 필요하지 않은 파일을 이 디렉터리에서 제거해야 합니다. 그러나 시스템은 앱이 실행되고 있지 않을 때 이 디렉토리를 제거할 수 있습니다.
    • 이 디렉토리의 내용은 iTunes 또는 iCloud에 의해 백업되지 않습니다.
  • iOS 앱은 Documents, Library 및 tmp 디렉토리에 추가 디렉토리를 생성할 수 있습니다. 이 작업을 수행하면 해당 위치에 있는 파일을 더 잘 구성할 수 있습니다.

📍 Where You Should Put Your App’s Files

  • iOS 장치에서 동기화 및 백업 프로세스가 오래 걸리는 것을 방지하려면 파일을 저장할 위치를 선택하십시오.
  • 대용량 파일을 저장하는 앱은 iTunes 또는 iCloud에 백업하는 프로세스를 느리게 할 수 있습니다.
  • 또한 이러한 앱은 사용자의 사용 가능한 저장 공간을 많이 소모할 수 있으므로 사용자가 앱을 삭제하거나 해당 앱의 데이터를 iCloud에 백업하지 않도록 할 수 있습니다.
  • 이를 염두에 두고 다음 지침에 따라 앱 데이터를 저장해야 합니다.
    • Documents/에 사용자 데이터를 넣습니다. 사용자 데이터에는 일반적으로 사용자에게 노출할 수 있는 모든 파일(사용자가 생성, 가져오기, 삭제 또는 편집하기를 원하는 모든 파일)이 포함됩니다. 그리기 앱의 경우 사용자 데이터에는 사용자가 만들 수 있는 모든 그래픽 파일이 포함됩니다. 텍스트 편집기의 경우 텍스트 파일이 포함됩니다. 비디오 및 오디오 앱에는 사용자가 나중에 보거나 듣기 위해 다운로드한 파일이 포함될 수도 있습니다.
    • 앱 생성 지원 파일을 Library/Application support/ 디렉토리에 넣습니다. 일반적으로 이 디렉터리에는 앱이 실행하는 데 사용하지만 사용자에게는 숨겨져 있어야 하는 파일이 포함됩니다. 이 디렉토리에는 데이터 파일, 구성 파일, 템플릿 및 앱 번들에서 로드된 리소스의 수정된 버전도 포함될 수 있습니다.
    • Documents/ 및 Application Support/의 파일은 기본적으로 백업됩니다. NSURLIsExcludedFromBackupKey 키를 사용하여 -[NSURL setResourceValue:forKey:error:]를 호출하여 백업에서 파일을 제외할 수 있습니다. 다시 만들거나 다운로드할 수 있는 파일은 백업에서 제외해야 합니다. 이는 대용량 미디어 파일에 특히 중요합니다. 응용 프로그램이 비디오 또는 오디오 파일을 다운로드하는 경우 백업에 포함되어 있지 않은지 확인하십시오.
    • tmp/ 디렉토리에 임시 데이터를 넣습니다. 임시 데이터는 장기간 유지할 필요가 없는 모든 데이터로 구성됩니다. 작업이 끝나면 해당 파일을 삭제하여 사용자 장치의 공간을 계속 사용하지 않도록 하십시오. 시스템은 앱이 실행되고 있지 않을 때 이러한 파일을 주기적으로 제거합니다. 따라서 앱이 종료된 후에도 지속되는 이러한 파일에 의존할 수 없습니다.
    • Library/Caches/ 디렉토리에 데이터 캐시 파일을 넣습니다. 캐시 데이터는 임시 데이터보다 오래 지속되어야 하지만 지원 파일만큼 오래 지속되지 않아야 하는 모든 데이터에 사용할 수 있습니다. 일반적으로 응용 프로그램은 캐시 데이터가 제대로 작동하지 않아도 되지만 캐시 데이터를 사용하여 성능을 향상시킬 수 있습니다. 캐시 데이터의 예로는 데이터베이스 캐시 파일 및 다운로드 가능한 임시 콘텐츠가 포함되지만 이에 국한되지 않습니다. 시스템은 디스크 공간을 확보하기 위해 Caches/ 디렉토리를 삭제할 수 있으므로 앱은 필요에 따라 이러한 파일을 다시 생성하거나 다운로드할 수 있어야 합니다.

File System Basic - 공식문서

profile
I Am Groot

0개의 댓글