이 문서는 2012. 12. 23. 기준으로 작성된 글이므로, 이후에 애플 문서의 내용이 변경될 수 있습니다.
또한 전문 번역가가 아니기 때문에 의역, 오역의 소지가 다분히 많습니다.
참고하시기 바랍니다.
공개 수배 합니다!
유용한 iOS 개발문서를 함께 번역해 나갈 분들을 찾습니다.
현재도 함께 작업중이신 분들 모두 전문 번역가 아닙니다.
모두 열정과 열의로 함께 작업하고 계십니다.
자신의 재능을 자신뿐만 아니라 또 다른 누군가를 위해서 사용한다면 더더욱 빛이 날 것입니다.
함께하길 원하는 분께서는 덧글 또는 이메일 주시기 바랍니다 :)
오늘의 주제
1. Core App Objects of Your App
2. The Data Model
파헤치기 세 번째 시간입니다.^^
이번 파트는 낭만떡대 님께서 도와주셨습니다. 번역에 도움주셔서 진심으로 고맙습니다 :)
자, 그럼 출발해 봅시다^^~
# The Core Objects of Your App
테이블 2-1 The roll of objects in an iOS
Object(객체) |
Description(설명) |
UIApplication object
|
당신은 UIApplication 객체를 상속작업 없이 있는 그대로 사용합니다. 이 컨트롤러 객체는 상위계층에서의 앱 동작을 조정하고, 앱 이벤트 루프를 관리합니다. 당신의 커스텀 앱 계층 로직은 UIApplication 객체와 함께 동작하는 앱델리게이트 객체에 속하게 됩니다. |
App delegate object
|
App delegate는 앱 구동
시
UIApplicationMain function에 의해 생성되는
커스텀
객체입니다.
이 객체의 중요한 역할은 앱
내에서
상태 전이를 관리 하는 일
입니다.
예를
들어,
이 객체는 앱이
처음
구동할 때
(또는
background상태에서
다시 재 구동 될 때) 초기화 및
transitions(특정작업, 변화) 핸들링을 담당합니다.
app delegate가
어떻게
state transitions(상태변화)을 관리 하는지를
자세히
알고 싶다면
“Managing App State Changes.”를 읽어보세요. iOS 5.0이후 버전에서는 app delegate를 다른 app-related events(앱 관련 이벤트들)를 다루는데 사용할 수 있습니다. xCode 프로젝트 템플릿들은 app delegate를 UIResponder의 서브클래스로 정의되어 있습니다. 만약 UIApplication객체가 이벤트를 처리하지 않으면 처리되지 않은 이벤트는 app delegate에게 전달됩니다. 이때 다룰 수 있는 이벤트 종류와 자세한 정보는 “UIResponder Class Reference.”을 읽어보세요. |
Documents and data model objects
|
Data model 객체는 앱의 컨텐츠를 저장합니다. 예를 들어, 은행 앱은 금융거래 정보를 저장하고, 그림그리는 앱은 이미지를 저장하거나 더 나아가 그림이 그려지기 위한 명령 순서를 저장하기도 합니다.(후자의 경우, 이미지 객체는 이미지 데이터를 포함하기 위한 보관장소이므로 데이터 객체입니다.) 데이터 모델 객체의 부분 또는 전체를 관리하기 위해 다큐먼트 객체(UIDocument의 서브글래스 객체)를 사용할 수 있습니다. 다큐먼트 객체의 사용은 필수는 아니지만 파일 또는 파일패키지에 데이터를 그룹화해 저장할 수 있는 편리한 방법을 제공합니다. 더 많은 정보는 “Defining a Document-Based Data Model.”을 읽어보세요. |
View controller objects
|
View controller objects는 앱의 화면 구성을 관리합니다. 하나의 view controller는 하나의 view 와 그 view의 sub-view들을 관리 합니다. 그것들이 화면에 보여지는 순간, 뷰 컨트롤러는 그것들을 앱 윈도우에 올려서 화면에 보여지도록 합니다. UIViewController 클래스는 view controller 객체들의 기본 클래스 입니다. UIViewController는 view를 위한 기본 기능을 제공하고 화면에 표현하고, 디바이스의 로데이션에 대응해 view들을 로테이션 하는 역할을 담당하며 그 외 추가의 표준 시스템 행동을 제공합니다. UIKit과 다른 프레임 워크들은 이미지 픽커, 탭바, 네비게이션과 같은 기본 시스템 인터페이스의 동작을 위해 추가의 view controller 객체들을 제공하고 있습니다. 더 많은 정보를 원하면 "View Controller Programming Guide for iOS"를 읽어보세요. |
UIWindow object
|
UIWindow
객체는 스크린에 보여지는 view들을 관장합니다. 대부분의 앱들은 하나의 윈도우를 가지고 있고
그 윈도우는 메인 스크린이 됩니다. 그러나 몇몇 앱들은 외부 디스플레이에 보여지는 컨텐츠들을 위해 추가의
window를 가지는 경우도 있습니다.(외부 모니터 등 외부 화면 출력을 위해) view를 교체하기 위해 view controller를
사용해 window에 올려진 view들을 변경해야 하고 절대로
윈도우 자체를 교체하면 안됩니다. |
View, control, and layer objects
|
View와 Control은 컨텐츠의 시각적 표현을 위해 사용 됩니다. View는 지정된 직사각형 영역에 컨텐츠를 그리고(묘사하고) 그 영역에서 발생하는 이벤트에 응답하는 객체입니다. Control은 버튼, 텍스트필드 같은 특별한 타입의 view들을 의미 합니다. UIKit
프레임 워크는 많은 종류의 표준화된 view들을 제공합니다. 또한
UIView(또는 그 하위 클래스)를 직접 상속하여 당신만의 커스텀 view를 정의 할 수도 있습니다. 또한 뷰와 컨트롤들이 결합되는 것과 마찬가지로, 앱들은 코어 애니메이션 레이어와 뷰들이 결합될 수 있습니다. 레이어 객체들은 눈에 보이는 컨텐츠를 표현하기위한 데이터 객체입니다. 뷰들은 레이어를 짧은시간안에 효율적으로 그들의 컨텐츠를 렌더링하기 위해서 사용합니다.커스텀 레이어 객체를 추가하여 복잡한 애니메이션을 구현하는데 사용할 수 있습니다. |
하나의 iOS 앱이 다른 앱들과 구분되는 것은 데이터를 어떻게 관리하고 사용자에게 데이터를 어떻게 보여주는가에 따라 달려있습니다. UIKit과 상호작용하는 대부분의 객체들은 당신의 앱을 결정짓지 못하지만 앱의 동작을 개선할 수 있습니다. 예를 들어, 앱 델리게이트의 메소드가 앱 상태 변화에 대한 알림을 준다면 그에 상응하여 당신의 커스텀 코드가 적절한 반응을 할 수 있을 것입니다.
테이블 2-2 Data classes in the Foundation framework
Data |
Class |
Description |
String and text |
NSString (NSMutableString) NSAttributedString (NSMutableAttibutedString) |
iOS에서 string은 Unicode기반입니다. string클래스들은 다양한 방법으로 string을 생성하고
조작하는 방법을 제공합니다. Attributed string클래스는 string을 꾸밀 수 있도록
해줍니다(단, 반드시
Core Text와 결합하여 사용하여야 합니다) |
Numbers |
NSNumber NSDecimalNumber NSIndexPath |
숫자와 관련된 정보를 저장하고 싶을 때는
number클래스를 이용하세요. NSNumber클래스는 정수(Integer), 실수(floating-point values),
Booleans, 문자(char) 타입을 표현할 수 있습니다. NSIndexPath 클래스는 주로 계층적인 리스트에서 다중 레이어 선택을 명시할 때 주로 사용되는 숫자들의
순서를 저장합니다(주로 테이블뷰에서 많이 사용하죠). |
Raw bytes |
NSData(NSMutableData) NSValue |
바이트 데이터(Raw streams of bytes)를 저장할 때는 data object를 사용하세요. 데이터 객체는 아카이브 형식으로
객체를 저장할 때도 사용됩니다. NSValue 클래스는 카테고리를 사용하여 확장할 때 또는 point나 rectangle과 같은 데이터 타입을 저장하는데 사용됩니다. |
Dates and times |
NSData NSDataComponents |
타임스탬프, 달력날짜, 다른 시간관련
정보를 저장할 때 사용하세요. |
URLs |
NSURL |
네트워크 자원의 참조하는 것 뿐만 아니라
URLs 은 파일 저장 위치(file path)를 저장하는데도 사용할 수 있습니다. NSURL클래스는 심지어 파일에 관련된 속성들을 얻어오고 수정할 수 있도록 지원합니다. |
Collections |
NSArray (NSMuatableArray) NSDictionary (NSMuatubaleDictionary) NSIndexSet (NSMutableIndexSet) NSOrderedSet (NSMutableOrderedSet) NSSet (NSMuatableSet) |
collection들은 관련된 객체들을 그룹화해 한곳에 저장할 때 사용하세요. Foundation framwork는 여러 다른 타입의 콜렉션 클래스들을 지원해 줍니다.
|
-
NSInteger/NSUInteger : 부호가 있는 또는 없는 정수(시스템 아키텍쳐에 따라서
사이즈가 결정됨).
-
NSRange: 영역을 지정하는 구조체. 예를 들어, 문자열 내에서 선택된 문자들의 영역을 지정할 수 있음.
-
NSTimeInterval: 주어진 시간 간격의 초 단위 수
-
CGPont: 위치를 정의하는 x,y좌표
-
CGSize: 가로와 세로의 넓이 좌표값
-
CGRect: 사각형 지역을 정의하는 값(CGPoint 와 CGSize를 가진다)
물론, 커스텀 데이터 객체는 스칼라 값과
객체변수를 혼합해서 클래스의 멤버 변수로 선언 가능합니다. Listing 2-1은 간단한 사진첩을 위한
클래스 구현부분 입니다. 이 클래스의 인스턴스는 “이미지
배열”, “이미지에 대한 익덱스번호”, “사진첩 제목” 과 “수정가능여부(스칼라 변수인 BOOL)”를 갖습니다.
Listing 2-1 Definition
of a custom data object
주의 : 데이터 객체를 정의할 때, 어떤 멤버변수든간에 객체에 접근하려는 클라이언트트에게 노출시키기 위해서 프로퍼티 선언을 해줄 것을 강력히 권고합니다. 구현파일에 이 프로퍼티를 결합해 주는 것은 당신이 요청하는 속성에 따라서 적절한 접근 메소드를 자동으로 생성해 줍니다. 이것은 객체의 관계가 적절하게 유지되는 것과 적절한 시기에 객체가 제거되는 것을 보장합니다.
당신의 커스텀 객체를 다룰 때 되돌리기 기능이 어떻게 동작할 것인가 고려해 보십시오. 되돌리기 기능을 지원한다는 것은 당신의 객체가 바꾼 것을 깨끗하게 되돌린다는 것을 의미합니다. 만약 당신의 객체가 복잡한 로직을 포함한다면, 당신은 되돌리기 쉽도록 하는 것을 고려해야 합니다. 아래에 당신의 객체에 되돌리기 기능을 구현하기 쉽도록 하는 팁들이 있습니다.
-
대칭이 되도록 메소드들을 구현 하십시오. 예를 들어, 아이템을
더하는 메소드를 구현하면 아이템을 빼는 매소드도 같이 구현하세요
-
멤버 변수의 값을 바꾸는 코드를 동작 로직에서 제거하십시오.
-
많은 단계를 거치는 액션의 경우에는 NSUndoManager 객체를
사용하여 단계를 통합하도록 하십시오.
되돌기리 기능을 제공하는 방법에 대한 더 많은 정보를 얻고 싶으면 “Undo Architecture”를 참고하세요.
-
Core Data는 모델 객체의 모든 변화를
관리하기 위한 인프라스트럭쳐 입니다. Core Data는 undo(되돌리기), redo(되돌긴거 취소하기) 기능을 제공하며, 객체들의 상호관계를 유지하도록 지원해 줍니다.
-
코어데이터는 언제든지 메모리 내에 있는 모델 객체의 일부분을 유지할 수 있도록 해줍니다. 이것은 iOS 앱에서 굉장히 중요합니다.
-
코어데이터는 모델 객체의 구조를 표현하는데에 사용됩니다. 당신의
모델 클래스의 주요 기능과 그 관계에 대해서 GUI 기반의 편집기를 통하여 정의 할 수 있습니다. 이는 기본값과 값의 범위 등을 설정 등을 포함아여 강력한 기능을 무료로 사용할 수 있도록 제공합니다.
-
코어데이터는 당신의 객체를 수정한 것에 대하여 분리된 상태로 유지할 수 있습니다. 이는 당신이 원한다면 유용하게 쓰일 수 있씁니다. 예를 들어, 사용자가 하나의 뷰에서 수정을 해도, 다른 뷰에서는 수정한 것의
영향을 주지 않게 할 수 있습니다.
-
또한 데이터의 버져닝과 마이그레이션을 지원합니다. 이 기능은 예전 데이터를 현재의 버전으로
업그레이드를 하기 쉽게 도와 줍니다.
-
데이터를 iCloud에 쉽게 저장할 수 있도록 해주며, 다양한
디스바이스에서 접근 할 수 있도록 해줍니다.
Core Data 에 대한 자세한 정보는 “Core Data
Programming Guide”를 참고 하세요
후아~ 힘드네용+_+ !!!
번역하느라 고생하신 낭만떡대님께 다시 한 번 진심으로 감사의 말씀 전합니다 :)
by yagom
facebook : http://fb.yagom.net
twitter : http://twitter.yagom.net ( @yagomsoft )
p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.
RSS Feed 받기
↓↓↓저 열심히 썼는데 손가락 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓
'iOS Dev > 도큐먼트파헤치기' 카테고리의 다른 글
파헤치기 #5. iOS App Programming Guide (5) App States and Multitasking <1> (12) | 2013.01.09 |
---|---|
파헤치기 #4. iOS App Programming Guide (4) Core App Objects <2> (0) | 2013.01.02 |
파헤치기 #2. iOS App Programming Guide (2) App Design Basics (11) | 2012.12.05 |
파헤치기 #1. iOS App Programming Guide (1) Introduction (15) | 2012.11.28 |
파헤치기 #0. 시작에 앞서... (23) | 2012.11.20 |