2. 아이폰 앱 패턴
앱의 UI 설계
GUI 구현
컨트롤을 어떻게 사용할지 알아보기
데이터 처리하기
앱 실행
3. 앱 설계 규정 - 아이폰
아이폰 휴먼 인터페이스 가이드라인(The iPhone
Humal Interface Guidelines, HIG)
몰입형 앱(Immersive App)
유틸리티 앱(Utility App)
프로덕티비티 앱(Productivity App)
4. 피커와 버튼
라운드 사격형 버튼(rounded rectangle button)
어떤 액션을 수행하도록 지정해야 한다
피커(Picker)
한 화면에 보여줄 수 있는 항목 개수가 제한되어 있다.
사용자가 사용 가능한 전체 항목을 한꺼번에 다 볼 수 없다
피커는 뷰에 보여주거나 사라지게 할 수는 있지만 전체크기는 변경할 수 없
다.
5. 앱 실행 순서
main(...)이 가장 먼저 실행
Main() 함수가 코코아 터치 앱을 실행
MainWindow.xib파일은 닙 파일과 응용프로그램
간의 연결정보를 갖고 있다
코코아 터치 프레임워크가 닙으로부터 뷰를 생
성
컴포넌트 이벤트 발생, 연결된 컨트롤러 인스턴
6. 컨트롤 - 데이터소스 - 델리게이트
컨트롤
각기 고유한 데이터 소스와 델리게이트를 가진다
데이터 소스
컨트롤과 실제 보여줄 데이터 사이에서 다리 역할
UI컨트롤에 표시할 데이터를 제공
델리게이트
정보를 저장하고 보여주고, 어떤 뷰를 언제 보여줄지 제어
데이터를 저장하거나 화면에 표시하는 등의 처리를 주로 담당
7. 피커(UIPicker) 특징, 메소드
델리게이트(UIPickerViewDelegate)
어떤 줄에 보여줄 뷰를 그리는 일
특정 줄(row)에 보여줄 항목(문자열 또는 뷰)
pickerView:titleForRow:forComponent:
데이터 소스(UIPickerViewDataSource)
컴포넌트(컬럼)의 개수
pickerView:numberOfRowsInComponent:
numberOfComponentsInPickerView
8. 프로토콜
데이터 소스 및 델리게이트가 어떤 메시지에 응답해야 하는지 정의
프로토콜은 어떤 메소드(메시지)를 구현해야 하는지 알려준다
프로토콜은 필수 및 선택 메소드를 정의
어떤 프로토콜을 따라야 하는지는 개발자 문서 참고
Ex) UIPickerViewDatasource 프로토콜은
pickerView:numberOfRowsInComponent: 메소드를 필수 메소드로 요구
9. 피커가 작동하기 위해서는 델리게이트와 데이터 소스가 필요
.h파일과 .m 파일은 함께 작동
구현파일(.m)은 선언한 것들을 실제로 구현
모든 구현은 @implementation 키워드 다음부터 시작
메모리를 반납하기 위해서 객체를 release
Xcode는 현재 인터페이스 빌더에서 보이는 화면이 아니라, 단지 디스크에 저
장되어 있는 닙 파일을 실행할 뿐이다(반드시 저장)
피커뷰 데이터 소스 프로토콜에는 두개의 필수 메소드가 있다
Objective-C의 헤더파일에 있는 @interface는 클래스를 정의하는 키워드
IBOutlet을 선언하고 나서 똑같은 이르의 프로퍼티도 선언해야 한다
11. 정리
프로토콜
데이터 소스 및 델리게이트가 응답할 메시지를 정의
헤더파일에 선언, 일부는 선택적일 수 있다
델리게이트
UI컨트롤이 처리해야할 것을 담당
데이터를 저장하거나 화면에 표시하는 등의 처리
데이터 소스
UI컨트롤에 표시할 데이터를 제공
12. 아이폰 앱 개발을 위한 Objective-C
#include와 동일
#import <UIKit/UIKit.h>
클래스의 정의를 나타내는 키워드
@interface StudyViewController : UIViewController
클래스 이름 콜론(:) 다음에 상위 클래스
<UIPickerViewDataSource, UIPickerViewDelegate> {
프로토콜은 꺽쇠 괄호(<>)안에 정의
IBOutlet UIPickerView *picker; 클래스 멤버를 선언하는 문장
NSArray* activities; 포인터 앞에 애스테리스크(*)를 붙임
NSArray* feelings;
}
@property는 Objective-C에게 게터와 세
터 메소드를 자동으로 생성하라고 명령 프로퍼티 이름과 타입
@property (nonatomic, retain) UIPickerView* picker;
- (IBAction) sendButton: (id) sender; IBAction 메소드는 반드시 범용 객체 포
인터형인 id형의 인자가 하나 선언
@end
19. Objective-C
아이폰 앱 개발 언어
객체지향 언어
발전된 메모리 관리 기법
메시지 전달과 동적 타입 사용
상속과 인터페이스 정의
20. 메모리 관리
클래스에 alloc, new, copy, mutableCopy 메시지를
보내어 생성한 객체는 반드시 릴리스해야 한다
그 외의 메시지를 통해 생성된 객체는 리테인 카
운트는 1이며, 오토릴리스 풀에 들어 있으므로,
현재의 이벤트 처리가 끝나면 제거된다