SlideShare une entreprise Scribd logo
1  sur  20
아이폰 앱 패턴
  2010. 08. 10
아이폰 앱 패턴
   앱의 UI 설계
   GUI 구현
   컨트롤을 어떻게 사용할지 알아보기
   데이터 처리하기
   앱 실행
앱 설계 규정 - 아이폰
   아이폰 휴먼 인터페이스 가이드라인(The iPhone
    Humal Interface Guidelines, HIG)
   몰입형 앱(Immersive App)
   유틸리티 앱(Utility App)
   프로덕티비티 앱(Productivity App)
피커와 버튼
   라운드 사격형 버튼(rounded rectangle button)
    어떤 액션을 수행하도록 지정해야 한다


   피커(Picker)
    한 화면에 보여줄 수 있는 항목 개수가 제한되어 있다.

    사용자가 사용 가능한 전체 항목을 한꺼번에 다 볼 수 없다

    피커는 뷰에 보여주거나 사라지게 할 수는 있지만 전체크기는 변경할 수 없
    다.
앱 실행 순서
   main(...)이 가장 먼저 실행
   Main() 함수가 코코아 터치 앱을 실행
   MainWindow.xib파일은 닙 파일과 응용프로그램
    간의 연결정보를 갖고 있다
   코코아 터치 프레임워크가 닙으로부터 뷰를 생
    성
   컴포넌트 이벤트 발생, 연결된 컨트롤러 인스턴
컨트롤 - 데이터소스 - 델리게이트


   컨트롤
    각기 고유한 데이터 소스와 델리게이트를 가진다

   데이터 소스
    컨트롤과 실제 보여줄 데이터 사이에서 다리 역할

    UI컨트롤에 표시할 데이터를 제공

   델리게이트
    정보를 저장하고 보여주고, 어떤 뷰를 언제 보여줄지 제어

    데이터를 저장하거나 화면에 표시하는 등의 처리를 주로 담당
피커(UIPicker) 특징, 메소드

   델리게이트(UIPickerViewDelegate)
    어떤 줄에 보여줄 뷰를 그리는 일

    특정 줄(row)에 보여줄 항목(문자열 또는 뷰)
    pickerView:titleForRow:forComponent:

   데이터 소스(UIPickerViewDataSource)
    컴포넌트(컬럼)의 개수
    pickerView:numberOfRowsInComponent:
    numberOfComponentsInPickerView
프로토콜

   데이터 소스 및 델리게이트가 어떤 메시지에 응답해야 하는지 정의
    프로토콜은 어떤 메소드(메시지)를 구현해야 하는지 알려준다
    프로토콜은 필수 및 선택 메소드를 정의
    어떤 프로토콜을 따라야 하는지는 개발자 문서 참고
    Ex) UIPickerViewDatasource 프로토콜은
    pickerView:numberOfRowsInComponent: 메소드를 필수 메소드로 요구
   피커가 작동하기 위해서는 델리게이트와 데이터 소스가 필요
   .h파일과 .m 파일은 함께 작동
   구현파일(.m)은 선언한 것들을 실제로 구현
   모든 구현은 @implementation 키워드 다음부터 시작
   메모리를 반납하기 위해서 객체를 release
   Xcode는 현재 인터페이스 빌더에서 보이는 화면이 아니라, 단지 디스크에 저
    장되어 있는 닙 파일을 실행할 뿐이다(반드시 저장)

   피커뷰 데이터 소스 프로토콜에는 두개의 필수 메소드가 있다

   Objective-C의 헤더파일에 있는 @interface는 클래스를 정의하는 키워드

   IBOutlet을 선언하고 나서 똑같은 이르의 프로퍼티도 선언해야 한다
델리게이


피커 컨트롤



         데이터 소스
정리
   프로토콜
    데이터 소스 및 델리게이트가 응답할 메시지를 정의

    헤더파일에 선언, 일부는 선택적일 수 있다

   델리게이트
    UI컨트롤이 처리해야할 것을 담당

    데이터를 저장하거나 화면에 표시하는 등의 처리

   데이터 소스
    UI컨트롤에 표시할 데이터를 제공
아이폰 앱 개발을 위한 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
프로퍼티 속성 키워드
프로퍼티 속성 키워드
    readonly
프로퍼티 속성 키워드
    readonly
     retain
프로퍼티 속성 키워드
    readonly
     retain
    readwrite
프로퍼티 속성 키워드
    readonly
     retain
    readwrite
      copy
프로퍼티 속성 키워드
    readonly
     retain
    readwrite
      copy
     assign
Objective-C
   아이폰 앱 개발 언어
   객체지향 언어
   발전된 메모리 관리 기법
   메시지 전달과 동적 타입 사용
   상속과 인터페이스 정의
메모리 관리

   클래스에 alloc, new, copy, mutableCopy 메시지를
    보내어 생성한 객체는 반드시 릴리스해야 한다
   그 외의 메시지를 통해 생성된 객체는 리테인 카
    운트는 1이며, 오토릴리스 풀에 들어 있으므로,
    현재의 이벤트 처리가 끝나면 제거된다

Contenu connexe

Similaire à 아이폰 앱 패턴

HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.Hojin Jun
 
[액션스크립트] 1부 액션 스크립트 2.0
[액션스크립트] 1부 액션 스크립트 2.0[액션스크립트] 1부 액션 스크립트 2.0
[액션스크립트] 1부 액션 스크립트 2.0MinGeun Park
 
Functional Kotlin makes Kotlin functional
Functional Kotlin makes Kotlin functionalFunctional Kotlin makes Kotlin functional
Functional Kotlin makes Kotlin functionalHyunWoo Lee
 
20201121 코드 삼분지계
20201121 코드 삼분지계20201121 코드 삼분지계
20201121 코드 삼분지계Chiwon Song
 
Spring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerSpring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerKyung Koo Yoon
 
Java script 강의자료_ed13
Java script 강의자료_ed13Java script 강의자료_ed13
Java script 강의자료_ed13hungrok
 
10장 아이패드에 대한 고려사항
10장 아이패드에 대한 고려사항10장 아이패드에 대한 고려사항
10장 아이패드에 대한 고려사항Jihoon Kong
 
안드로이드 개발자에 필요한 오픈소스이야기
안드로이드 개발자에 필요한 오픈소스이야기안드로이드 개발자에 필요한 오픈소스이야기
안드로이드 개발자에 필요한 오픈소스이야기YoungSu Son
 
Windows reversing study_basic_8
Windows reversing study_basic_8Windows reversing study_basic_8
Windows reversing study_basic_8Jinkyoung Kim
 
Software Architect day - 웹 프레임워크 종결 - metaworks3
Software Architect day - 웹 프레임워크 종결 -  metaworks3Software Architect day - 웹 프레임워크 종결 -  metaworks3
Software Architect day - 웹 프레임워크 종결 - metaworks3uEngine Solutions
 
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기Moonbeom KWON
 
Angular CodeLab 첫번째
Angular CodeLab 첫번째Angular CodeLab 첫번째
Angular CodeLab 첫번째SangHun Lee
 
Protocol Oriented Programming in Swift
Protocol Oriented Programming in SwiftProtocol Oriented Programming in Swift
Protocol Oriented Programming in SwiftSeongGyu Jo
 
[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322jylee6977
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 Yong Joon Moon
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장Seongchan Kang
 
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with SpringKeesun Baik
 
Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2plusperson
 
전달교육(분석설계모델링)
전달교육(분석설계모델링)전달교육(분석설계모델링)
전달교육(분석설계모델링)gimslide
 

Similaire à 아이폰 앱 패턴 (20)

HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.
 
[액션스크립트] 1부 액션 스크립트 2.0
[액션스크립트] 1부 액션 스크립트 2.0[액션스크립트] 1부 액션 스크립트 2.0
[액션스크립트] 1부 액션 스크립트 2.0
 
Functional Kotlin makes Kotlin functional
Functional Kotlin makes Kotlin functionalFunctional Kotlin makes Kotlin functional
Functional Kotlin makes Kotlin functional
 
20201121 코드 삼분지계
20201121 코드 삼분지계20201121 코드 삼분지계
20201121 코드 삼분지계
 
Spring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerSpring Framework - Inversion of Control Container
Spring Framework - Inversion of Control Container
 
Java script 강의자료_ed13
Java script 강의자료_ed13Java script 강의자료_ed13
Java script 강의자료_ed13
 
10장 아이패드에 대한 고려사항
10장 아이패드에 대한 고려사항10장 아이패드에 대한 고려사항
10장 아이패드에 대한 고려사항
 
안드로이드 개발자에 필요한 오픈소스이야기
안드로이드 개발자에 필요한 오픈소스이야기안드로이드 개발자에 필요한 오픈소스이야기
안드로이드 개발자에 필요한 오픈소스이야기
 
Windows reversing study_basic_8
Windows reversing study_basic_8Windows reversing study_basic_8
Windows reversing study_basic_8
 
Software Architect day - 웹 프레임워크 종결 - metaworks3
Software Architect day - 웹 프레임워크 종결 -  metaworks3Software Architect day - 웹 프레임워크 종결 -  metaworks3
Software Architect day - 웹 프레임워크 종결 - metaworks3
 
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
 
Angular CodeLab 첫번째
Angular CodeLab 첫번째Angular CodeLab 첫번째
Angular CodeLab 첫번째
 
Protocol Oriented Programming in Swift
Protocol Oriented Programming in SwiftProtocol Oriented Programming in Swift
Protocol Oriented Programming in Swift
 
[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장
 
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with Spring
 
Java JPA
Java JPAJava JPA
Java JPA
 
Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2
 
전달교육(분석설계모델링)
전달교육(분석설계모델링)전달교육(분석설계모델링)
전달교육(분석설계모델링)
 

Dernier

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 

Dernier (6)

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 

아이폰 앱 패턴

  • 1. 아이폰 앱 패턴 2010. 08. 10
  • 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을 선언하고 나서 똑같은 이르의 프로퍼티도 선언해야 한다
  • 10. 델리게이 피커 컨트롤 데이터 소스
  • 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
  • 15. 프로퍼티 속성 키워드 readonly retain
  • 16. 프로퍼티 속성 키워드 readonly retain readwrite
  • 17. 프로퍼티 속성 키워드 readonly retain readwrite copy
  • 18. 프로퍼티 속성 키워드 readonly retain readwrite copy assign
  • 19. Objective-C  아이폰 앱 개발 언어  객체지향 언어  발전된 메모리 관리 기법  메시지 전달과 동적 타입 사용  상속과 인터페이스 정의
  • 20. 메모리 관리  클래스에 alloc, new, copy, mutableCopy 메시지를 보내어 생성한 객체는 반드시 릴리스해야 한다  그 외의 메시지를 통해 생성된 객체는 리테인 카 운트는 1이며, 오토릴리스 풀에 들어 있으므로, 현재의 이벤트 처리가 끝나면 제거된다

Notes de l'éditeur