iOS File System
- iOS
- 2021. 4. 4.
Sandboxed App
iOS 앱은 샌드 박스에 의해 제한되므로 앱은 일반적으로 해당 앱에서 만든 파일에만 접근할 수 있습니다.
(앱은 주소록 데이터 및 사진과 같은 특정 다른 파일에 접근할 수 있지만 해당 용도로 특별히 설계된 API를 통해서만 가능합니다.)
또한 iOS 기기에서 파일 보호가 활성화 된 경우 앱은 기기가 잠겨있을 때 특정 파일에 대한 접근을 차단하도록 선택할 수 있습니다
보안상의 이유로 iOS 앱과 파일 시스템의 상호 작용은 앱의 샌드박스 디렉토리 내에 있는 디렉토리로 제한됩니다.
새 앱을 설치하는 동안 설치 프로그램은 샌드박스 디렉토리 내에 앱에 대한 여러 컨테이너 디렉토리를 만듭니다.
각 컨테이너 디렉토리에는 특정 역할이 있습니다.
번들 컨테이너 디렉토리는 앱의 번들을 보유하고 데이터 컨테이너 디렉토리는 앱과 사용자 모두에 대한 데이터를 보유합니다.
데이터 컨테이너 디렉토리는 앱이 데이터를 정렬하고 구성하는 데 사용할 수 있는 여러 하위 디렉토리로 더 나뉩니다.
또한 앱은 런타임에 추가 컨테이너 디렉토리(예: iCloud 컨테이너)에 대한 접근을 요청할 수 있습니다.
공용 시스템 인터페이스를 사용하여 사용자의 연락처 또는 음악과 같은 항목에 접근하는 경우를 제외하고
일반적으로 앱은 컨테이너 디렉토리 외부의 파일에 접근하거나 파일을 만드는 것이 금지됩니다.
iOS 앱에서 일반적으로 사용되는 디렉토리
AppName.app
- 앱의 번들입니다. 이 디렉토리에는 앱과 모든 리소스가 포함되어 있습니다.
이 디렉토리는 쓸 수 없으며, 변조를 방지하기 위해 번들 디렉토리는 설치시 서명됩니다.
그러나 앱 번들에 저장된 모든 리소스에 대한 읽기 전용 접근 권한을 얻을 수 있습니다.
Documents/
- 이 디렉토리를 사용하여 사용자 생성 콘텐츠를 저장합니다.
이 디렉토리의 내용은 파일 공유를 통해 사용자에게 제공될 수 있습니다.
따라서 이 디렉토리에는 사용자에게 노출할 수 있는 파일만 포함되어야 합니다.
Documents/Inbox
- 이 디렉토리를 사용하여 앱이 외부 엔티티에서 열도록 요청한 파일에 접근합니다.
특히 Mail 프로그램은 앱과 관련된 이메일 첨부 파일을 이 디렉토리에 저장합니다.
Document interaction 컨트롤러는 파일을 저장할 수도 있습니다.
앱은 이 디렉토리의 파일을 읽고 삭제할 수 있지만 새 파일을 만들거나 기존 파일에 쓸 수는 없습니다.
사용자가 이 디렉토리에서 파일을 편집하려고 하면 변경하기 전에 앱에서 해당 파일을 디렉토리 밖으로 자동으로 이동해야 합니다.
Library/
- 사용자 데이터 파일이 아닌 모든 파일의 최상위 디렉토리입니다.
일반적으로 여러 표준 하위 디렉토리 중 하나에 파일을 넣습니다.
iOS 앱은 일반적으로 Application Support 및 Caches 하위 디렉토리를 사용하지만 사용자 정의 하위 디렉토리를 만들 수 있습니다.
tmp/
이 디렉토리를 사용하여 앱 실행 사이에 지속될 필요가 없는 임시 파일을 작성합니다.
- 앱은 더 이상 필요하지 않은 파일을 이 디렉토리에서 제거해야 합니다.
앱이 실행되고 있지 않을 때 시스템에서 이 디렉토리를 제거할 수 있습니다.
이 디렉토리의 내용은 iTunes 또는 iCloud에 의해 백업되지 않습니다.
'iOS' 카테고리의 다른 글
[SwiftUI] Carousel View 만들기 (6) | 2022.09.08 |
---|---|
NSCache와 Purgeable Memory (0) | 2021.04.02 |
OptionSet을 준수하는 커스텀 타입 작성하기 (0) | 2021.04.01 |
Render loop 정리 (작성중) (0) | 2021.03.28 |
CustomStringConvertible (0) | 2021.03.27 |