iOS App 파일 구조

iOS 앱 개발에 폴더 내의 파일 접근은 빈번히 사용된다. iOS 앱 폴더 구조에 대해 알아보자.

< From iOS Developer Library >

iOS 는 기본적으로 앱 마다 별도의 파일을 생성하여 공유되지 않도록 한다. 이를 샌드박스(Sandbox)라 한다.

각 폴더의 역할은 다음과 같다.

  • App 폴더 : 어플리케이션의 홈 디렉토리
  • MyApp.app : bundle 이라고 하며 앱 실행을 위한 파일들이 위치한다. Xcode 를 통해 템플릿 프로젝트를 만들때 자동으로 생성되는 기본 아이콘 이미지들은 이 곳에 위치한다. 개발 중 추가되는 파일(이미지, 텍스트 파일 등)도 이곳에 위치한다. 앱 실행 중 폴더의 내용 변경 및 쓰기는 하지 말자.
  • Documents : 사용자 정보를 저장한다. 이 곳의 데이터는 iTunes 에 의해 백업된다. Xcode 를 이용하여 이 곳에 파일을 추가할 수 없다. Runtime 에서만 접근 가능하다.
  • Library : 사용자 정보를 제외한, 백업을 필요로 하는 데이터를 저장하는데 사용한다. Runtime 에서 접근 가능하다.
  • tmp : 임시 파일을 위한 저장소이다. 개발자는 필요 없어진 파일을 삭제해야 한다. iOS 시스템은 앱이 실행 상태가 아닐 때 폴더내 파일을 삭제할 수 있다. Runtime 에서 접근 가능하다.

파일 내의 데이터 크기는 iTunes 또는 iCloud 를 통한 백업 속도에 영향을 미친다. 또한 앱 실행 중 다운로드 받는 컨텐츠 – 매거진, 뉴스페이퍼, 맵 앱등- 가 있는 경우 앱 메모리 용량 확보를 고려한 파일 관리가 필요하다. 앱 파일 보안 등 자세한 사항은 File System Programming Guide 를 참고하자.

가장 많이 사용되는 폴더는 사용자 정보를 저장하는데 사용되는 Documents 폴더다. Documents 폴더의 경로를 얻는 방법은 다음과 같다.

// 1)
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentFolderPath = [paths objectAtIndex:0];

// 2)
NSString *documentsFolderPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]);

위 방법으로 개발자는 절대 경로를 하드 코딩할 필요 없이 Documents 폴더에 접근 가능하다. NSHomeDirecotory()는 App폴더를 의미한다.

bundle 폴더 – MyApp.app – 는 다음과 같이 접근가능하다. 두 경로는 동일하다.

// 1)
NSString *bundlePath = [[NSBundle mainBundle] resourcePath];
// 2)
NSString *bundlepath = [[NSBundle mainBundle] bundlePath];

* Reference

Advertisements
Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: