[Apple Doc] Resource Programming Guide : Introduction
About Resources
리소스는 실행코드와 함께 제공되는 데이터 파일입니다. 리소스는 복잡한 데이터 집한 또는 그래픽 콘텐츠의 생성을 코드 외부나 보다 적절한 도구로 이동하여 작성해야 하는 코드를 단순화합니다. 예를 들어 코드로 픽셀 하나하나 생성하는 것 대신에 이미지 에디터를 사용해서 만드는 것이 보다 효율적입니다. 이러한 리소스의 이점을 얻기 위해서는 런타임에 리소스를 읽어 들여서 사용하기만 하면 됩니다.
코드를 단순화 하는 것 외에도 리소스는 국제화 처리를 위해 밀접한 부분입니다. 문자열이나 기타 사용자가 볼 수 있는 콘텐츠를 하드코딩하는 것보다 외부 리소스 파일에 배치할 수 있습니다. 그러면 지원되는 언어를 위한 각각의 리소스 파일을 생성하는 간단한 처리만으로 앱의 지역화를 할 수 있습니다. OS X 및 iOS에서 사용되는 번들 메커니즘은 현지화된 리소스를 구성하고 사용자가 선호하는 언어와 일치하는 리소스 파일을 쉽게 로드할 수 있는 방법을 제공합니다.
이 문서는 OS X와 iOS에서 제공하는 리소스 타입에 대한 정보와 코드상에서 이 리소스들을 사용하는 방법을 제공합니다. 대부분의 리소스들은 third-party 앱을 통해 생성되거나 /Developer/Applications 디렉터리에서 제공되는 개발자 도구를 이용하여 만들어집니다. 또한 이 문서는 앱에서 자원을 사용하는 것을 언급하고 있지만, 이 정보는 프레임워크와 플러그인을 포함한 다른 유형의 번들 실행 파일에도 적용됩니다.
이 문서를 읽기 전에 앱 번들에 의해 강제된 구조에 익숙해져야 합니다. 이 구조를 이해하는 것은 앱에서 사용할 리소스 파일을 구성하고 찾는것을 쉽게 만듭니다. 더 자세한 번들의 구조는 Bundle Programming Guide를 참조하세요.
At a Glance
응용 프로그램은 많은 리소스 타입들을 포함할 수 있으며 그중 몇몇은 iOS나 OS X에서 직접적으로 지원합니다.
Nib Files Store the Objects of Your Application’s User Interface
(Nib 파일은 사용자 인터페이스 객체들을 저장합니다.)
Nib 파일은 iOS나 Mac 앱을 생성하기 위해 사용되는 전형적인 리소스 타입입니다. Nib 파일은 런타임에 재생성을 원하는 동결 건조된 객체 집합을 기본적으로 포함하는 데이터 아카이브입니다. Nib 파일은 일반적으로 사전 구성된 윈도우, 뷰 그리고 다른 시각적인 객체지향 객체들을 저장하지만 컨트롤러와 같이 비시각적인 객체들도 저장할 수 있습니다.
nib 파일은 Xcode의 Interface Builder를 통해서 수정하며 Interface Builder는 객체들을 조합할 수 있는 그래픽 편집기가 제공됩니다. 앱에서 nib 파일을 로드한 후에 nib-loading 코드는 파일의 각 객체를 초기화하고 Interface Builder에서 정의한 상태로 복원합니다. 따라서 Interface Builder에서 보는 것은 실제로 런타임에 앱에서 얻는 것입니다.
String Resources Containing Localizable Text
(지역화 Text를 저장하는 String 리소스)
Text는 사용자 인터페이스에서 중요한 부분이면서 지역화에 가장 많은 영향을 받는 리소스 이기도 합니다. 코드상에 Text를 하드 코딩하는 것보다 iOS나 OS X는 사용자에게 노출되는 텍스트를 저장할 수 있는 저장소인 strings 파일을 지원합니다. 이 파일은 사람이 읽을 수 있는 텍스트 파일(UTF-16 인코딩)로 앱의 string 리소스 집합을 포함합니다.(여기서 "strings" 복수형을 사용하는 것은 해당 유형의 파일명 확장자로 사용되기 때문에 의도적인 것입니다.) Strings 파일은 한번 작성된 코드에 쉽게 교체될 수 있는 리소스 파일에서 적절한 지역화 텍스트를 읽어들이는 것으로 국제화 및 지역화 절차를 대단히 간단하게 만들어줍니다.
Core Foundation과 Fuoudation 프레임워크는 strings 파일로부터 텍스트를 로드하는 기능을 제공합니다. 또한 이 기능을 사용하는 앱은 Xcode와 함께 제공되는 툴을 사용하여 개발 프로세스를 통해 이 리소스 파일을 생성하고 유지할 수 있는 이점을 얻을 수 있습니다.
Relevant Chapters: String Resources
Images, Sounds, and Movies Represent Pre-rendered Content
(이미지, 소리 그리고 영화는 사전 랜더링된 콘텐츠를 나타냅니다.)
이미지와 소리 그리고 영화 리소스는 iOS, Mac 앱에서 중요한 역할을 담당합니다. 이미지는 각 운영체제에서 사용하는 고유한 시각적 스타일을 생성하는 역할을 합니다. 또한 이미지는 복잡한 시작적 객체들을 그리려고 하는 코드를 간단하게 하는데 도움을 줍니다. 소리와 영화 파일은 비슷하게 앱의 전박적인 사용자 경험을 향상시키는 동시에 이러한 경험을 만들기 위해 필요로 하는 코드를 단순화합니다. 두 운영 시스템 모두 앱에서 이러한 타입의 리소스들을 로드하고 표출할 수 있는 광범위한 지원을 제공합니다..
Relevant Chapters: Image, Sound, and Video Resources
Property Lists and Data Files Separate Data from Code
(프로퍼티 리스트와 데이터 파일은 코드와 데이터를 구분합니다.)
프로퍼티 리스트 파일은 String, number, Boolean, date, raw data value를 저장하는 구조화된 파일입니다. 이 파일의 데이터 아이템들은 배열과 딕셔너리 구조를 사용하여 구성되며 대부분의 항목은 unique 키와 연결됩니다. 시스템은 프로퍼티 리스트를 간단한 데이터 집합을 저장하는 데 사용합니다. 예를 들어 Info.plist 파일은 모든 앱에서 쉽게 찾을 수 있는 프로퍼티 리스트 파일의 예제입니다. 또한 간단한 데이터 저장이 필요할 때 프로퍼티 리스트 파일을 사용할 수도 있습니다.
OS X는 프로퍼티 리스트 외에도 특정 용도를 위한 몇 가지 특별한 구조화된 파일을 지원합니다. 예를 들어 AppleScript 데이터와 사용자 도움말은 특별한 데이터 포맷의 데이터 파일을 사용하여 저장됩니다. 또한 사용자 정의 파일을 직접 생성할 수도 있습니다.
Relevant Chapters: Data Resource Files
iOS Supports Device-Specific Resources
(iOS는 기기 특화된 리소스를 지원합니다.)
iOS 4.0 이상에서는 개별적인 리소스 파일을 특정 유형의 장치에서만 사용할 수 있는 것으로 표시하는 것이 가능합니다. 이 기능은 범용 유니버셜 앱을 작성해야 하는 코드를 단순화합니다. 아이폰을 위한 리소스 파일의 버전과 아이패드를 위한 파일의 다른 버전을 로드하기 위한 코드의 방향을 구분하여 생성하는 것보다 번들 로딩 루턴이 올바른 파일을 선택하도록 할 수 있습니다. 리소스 파일의 이름만 적절하게 지정하기만 하면 됩니다.
특정 기기와 리소스 파일을 연관시키리면 파일 이름에 커스텀 한정자를 추가합니다. 이 한정자 문자열을 포함하면 다음과 같은 형식의 파일 이름이 만들어집니다.
<basename><device>.<filename_extension>
여기서 <basename> 문자열은 리소스 파일의 원래 이름을 나타냅니다. 또한 이것은 코드에서 이 파일에 접근할 때 사용하는 이름을 나타냅니다. 비슷하게 <filename_extension>은 파일의 타입을 식별하는 표준 파일 확장자입니다. <device>는 대소문자를 구분하는 문자이며 다음 값들 중 하나가 될 수 있습니다.
-
~ipad - 이 리소스는 iPad 기기에서만 로드되어야 합니다.
-
~iphone - 이 리소스는 iPhone나 iPod 기기에서만 로드되어야 합니다.
모든 유형의 리소스 파일에 기기 한정자를 적용할 수 있습니다. 예를 들어 MyImage.png라는 파일의 이미지를 가지고 있다고 하면. iPaddhk iPhone을 위하 다른 버전으로 지정하려면 MyImage~iPad.png와 MyImage~iphone.png의 이름을 리소스 파일을 생성하여 번들에 모두 포함시키면 됩니다. 이 이미지를 읽어 들이려면 코드에서 리소스를 MyImage.png로 계속 참조하고 다음과 같이 시스템이 적절한 버전을 선택하도록 합니다.
iPhone이나 iPod touch 기기에서 시스템은 MyImage~iphone.png 리소스 파일을 로드하는 반면에 iPad에서는 MyImage~iPad.png 리소스 파일을 로드하게 됩니다. 만약 기기 특정 리소스 버전을 찾지 못하면 시스템은 원래 파일 이름으로 된 리소스를 찾게 되고 이 예제에서는 원래 이미지인 MyImage.png가 됩니다.
See Also
아래의 애플 개발자 문자들은 리소스 프로그래밍 가이드와 개념적으로 연관되어 있습니다.
- Bundle Programming Guide는 앱에서 실행 코드와 리소스를 저장하기 위해 사용되는 번들의 구조를 설명합니다.
- Internationalization and Localization Guide는 앱과 앱의 리소스들을 다른 언어로 번역하기 위해 준비하는 절차를 설명합니다.
- Xcode Overview의 Build a User Interface 챕터에서는 nib 리소스 파일을 편집할 수 있는 도구에 대해서 설명합니다.
- Property List Programming Guide에서는 코코아 앱에서 프로퍼티 리스트 리소스 파일을 로딩하기 위한 기능에 대해서 설명합니다.
- Property List Programming Topics for Core Foundation에서는 C 기반의 앱에서 프로퍼티 리스트 리소스 파일을 로딩하기 위한 기능에 대해서 설명합니다.