I os 1

68
iOS - I 한상훈 Eznix 산업기능요원

description

iOS

Transcript of I os 1

Page 1: I os 1

iOS - I한상훈

Eznix 산업기능요원

Page 2: I os 1

Obj-C 기초 개념 iOS - 앱 구조 분석, 기본 Event 처리, IB 활용

Page 3: I os 1

Objective - C ?

Page 4: I os 1

• Mac OS X, iOS 개발 언어

• C에 객체지향을 도입한 언어

• C의 Super Set

• C 에 스몰토크 스타일의 메시지 구문 추가

Objective - C ?

Page 5: I os 1

Obj C Basement

Page 6: I os 1

기본 문법 - 표현법

• 객체 표현

• id Keyword

• 어떤 객체든 표현 가능

• id를 기반으로 객체간 동적 형 변환 지원

• ex ) id obj;

Page 7: I os 1

기본 문법 - 표현법

• 메세지 표현식

• [ ]를 메시지 표현식, 배열 두 군데에서 사용

• ex ) [obj msg1];

• ex ) element = arr[[obj count]];

• 메소드 호출과는 다르다

Page 8: I os 1

기본 문법 - 타입• Primitive Type - in C

• int, float, double, bool...etc

• Foundation Framework Type - in Obj-C

• NSInteger, CGFloat... etc

• 아키텍처에 따라 구분해서 컴파일

Page 9: I os 1

메세지 표현식• C++, Java

• obj.doSomething();

• Objective - C

• [obj doSomething];

• 두 개는 근본적으로 다르다.

• 검사는 컴파일 타임 / 검사, 매칭 모두 런타임

Page 10: I os 1

Obj-C - 메시지(함수)

• 기본적인 함수 선언, 콜 방식은 C 스타일

• 상속 방식은 C++ 보다는 Java에 가까움

• multiple inheritance 미지원

• protocol 로 interface

Page 11: I os 1

Obj-C - 메시지(함수)

• 구분자 ( 반환값 ) 키워드 : (타입) .....

• 구분자

• + : Class Method

• - : Instance Method

• (반환값), (타입) : 인자 및 반환값의 타입

• 키워드 : 함수명 및 인자 키워드

• Ex ) +(NSInteger) objectAtIndex:(NSInteger)

Page 12: I os 1

Obj-C - 클래스

• Obj - C 의 클래스는 NSObject 를 상속

• Instance 생성에는 [[클래스명 alloc] init]

Page 13: I os 1

Obj-C - 클래스• 구현부 - m

• @implementation

• ...

• 메서드 구현

• ...

• @end

Page 14: I os 1

Obj-C - 클래스• 선언부 - h

• @interface 클래스명 : 슈퍼클래스명 <프로토콜>

• {

• 멤버 변수 선언;

• }

• 메서드 선언;

• @end

Page 15: I os 1

Obj-C - 클래스

Page 16: I os 1

iOS App

Page 17: I os 1

App 생성

Page 18: I os 1

App 구조 분석

Page 19: I os 1

AppDelegate

• 어플리케이션 의 Delegate가 구현된 것

• UIApplication Object의 Delegate로서, 앱의 실행 상태 및 행동에 대한 프로토콜이 정의되어 있음

Page 20: I os 1

AppDelegate• - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary

*)launchOptions

• 어플리케이션이 처음 실행되고, Active상태가 된 뒤에 호출되는 함수, launchOptions Dictionary 에 실행 정보가 담겨온다.

• - (void)applicationWillResignActive:(UIApplication *)application

• 앱이 비활성화 상태가 될 때 실행된다. 스택에 가장 먼저쌓여서 다른 메서드보다 먼저 실행된다. ( 전화, 홈버튼 등등 )

• - (void)applicationDidEnterBackground:(UIApplication *)application

• 앱이 백그라운드로 넘어갈 때 실행된다.

• - (void)applicationWillEnterForeground:(UIApplication *)application

• 앱이 포어그라운드로 돌아올 때 실행된다.

• - (void)applicationDidBecomeActive:(UIApplication *)application

• 앱이 Active 상태로 전환될 때 실행된다. 잠금 화면 풀기, 태스크 전환 등 - 다른 함수가 실행되고 난 다음에 마지막으로 실행된다.

• - (void)applicationWillTerminate:(UIApplication *)application

• 앱이 완전 종료될 때 실행된다.

Page 21: I os 1
Page 22: I os 1

Story Board

• 실행 순서 및 화면 제공

• 뷰를 시각적으로 구성 가능

• 이벤트 구성 가능

• Xib를 대체

Page 23: I os 1
Page 24: I os 1

ViewController

• StoryBoard에서 만들어진 부의 컨트롤러

• 실질적인 이벤트의 내용 작성 및 처리가 이루어지는 곳

Page 25: I os 1

Etc

• Images.xcassets

• 아이콘 및 Launch Image를 관리하기 쉽게 추가된 assets

• .plist 파일

• 어플리케이션 정보를 담고 있는 파일

• 앱 이름, 번들, 구분자 등등 설정 내용도 가지고 있음

• . pch 파일 • Pre-Compiled-Header 의 약자로, 모든 파일에 적용되는 헤더로, #define등이 전역적으로 필요하다면 이 곳에 선언하면 된다.

• Main.m - 첫 실행 파일, 수정할 필요는 없다.

Page 26: I os 1

IBOutlet, IBAction Event

Transition

Page 27: I os 1

IBOutlet, IBAction

Page 28: I os 1

Code Side

• 대응 변수 작성

• 대응 이벤트 함수 작성

Page 29: I os 1

Code Side

• IBAction : IB에서 인식할 수 있는 액션 함수

• id는 이벤트 객체가 넘어온다.

• IBAction Keyword는 내부적으로 void로 선언되어 있다.

!

• IBOutlet : IB에서 인식할 수 있는 View 변수

• IB에서 맵핑을 통해서 Controller에서 View 를 컨트롤 가능하다.

Page 30: I os 1

Code Side

• 대응 이벤트 함수 내용 작성

Page 31: I os 1

IB Side• 대응 View 추가

Drag & Drop

Page 32: I os 1

IB Side

• 대응 View IBOutlet 과 연결

• 하단 바의 가장 왼쪽ViewController 클릭 - 드래그

Page 33: I os 1

IB Side

• 대응 View IBOutlet 과 연결

• 하단 바의 가장 왼쪽ViewController 클릭 - 드래그

• 원하는 IBOutlet과 매칭

Page 34: I os 1

IB Side

• 대응 View IBOutlet 과 연결

• 하단 바의 가장 왼쪽ViewController 클릭 - 드래그

• 원하는 IBOutlet과 매칭

Page 35: I os 1

IB Side

• 대응 View IBOutlet 과 연결

• 하단 바의 가장 왼쪽ViewController 클릭 - 드래그

• 원하는 IBOutlet과 매칭

• UIButton도 마찬가지로 작업

Page 36: I os 1

Event

Page 37: I os 1

IB Side• Event 대응 연결

• 버튼 클릭 시 발동 이벤트 연결

• 액션을 받을 컴포넌트를 오른쪽으로 드래그 - 하단의 ViewController로 드래그 앤 드랍

Page 38: I os 1

IB Side• Event 대응 연결

• 버튼 클릭 시 발동 이벤트 연결

• 액션을 받을 컴포넌트를 오른쪽으로 드래그 - 하단의 ViewController로 드래그 앤 드랍

• IBAction 으로 선언된 이벤트를 할당

Page 39: I os 1

IB Side• Event 대응 연결

• 버튼 클릭 시 발동 이벤트 연결

• 액션을 받을 컴포넌트를 오른쪽으로 드래그 - 하단의 ViewController로 드래그 앤 드랍

• IBAction 으로 선언된 이벤트를 할당

Page 40: I os 1

Code Side

• 이미 함수 내용이 작성되었으므로 할 일이 없음

Page 41: I os 1

Transition

Page 42: I os 1

기존 방식

• RootView Controller Change

• [RootViewController addSubView:ViewController.view]

• Navigation Controller

• pushViewController, popViewController

Page 43: I os 1

Segue?

• 기존의 방식을 대체

• IB에서 조작 가능

• 커스텀 기능도 지원

• Identifier로 구분, 코드에서 추가 처리 가능

Page 44: I os 1

Segue Transition

• 이벤트를 IB상에서 직접 추가하는 방법

!

!

• Segue를 생성 후 이벤트에서 수행하는 방법

Page 45: I os 1

Segue Transition

• Segue를 생성 후 이벤트에서 수행 - Segue 생성

Source ViewController Destination ViewController

Drag & Drop

Page 46: I os 1

Segue Transition

• Segue를 생성 후 이벤트에서 수행 - Segue 생성

Source ViewController Destination ViewController

Page 47: I os 1

Segue Transition

• Segue를 생성 후 이벤트에서 수행 - Segue 생성

Source ViewController Destination ViewControllerSegue

Page 48: I os 1

Segue Transition

• Segue를 생성 후 이벤트에서 수행 - Segue 생성

Page 49: I os 1

Segue Transition

• Segue를 생성 후 이벤트에서 수행 - Event 설정

• performSegueWithIdentifier 메서드를 통해서 Segue 동작 호출

Page 50: I os 1

Segue Transition

• IB상에서 직접 추가 - Segue 생성

Drag & Drop

Page 51: I os 1

Segue Transition

• IB상에서 직접 추가 - Segue 생성

Page 52: I os 1

Segue Transition

• Navigation Controller와 연계

Page 53: I os 1

Segue Transition

• Navigation Controller와 연계

Page 54: I os 1

Segue Transition

• Navigation Controller와 연계

Page 55: I os 1

Segue Transition

• Navigation Controller와 연계

Page 56: I os 1

Segue Transition

• Navigation Controller와 연계

Page 57: I os 1

Segue Transition

• Navigation Controller와 연계

Page 58: I os 1

Segue Transition

• Navigation Controller와 연계

Page 59: I os 1

Segue Transition

• Navigation Controller와 연계

Page 60: I os 1

Segue Transition

• Navigation Controller

• Pop시에는 Segue 이동이 아닌 popViewController 메서드로도 이동이 가능함

Page 61: I os 1

Segue Transition

• Navigation Controller

• Pop시에는 Segue 이동이 아닌 popViewController 메서드로도 이동이 가능함

Page 62: I os 1

Segue Transition

Page 63: I os 1

Segue Etc.

Page 64: I os 1

Segue - Etc.

• Segue Event, IBAction

• IBAction, Segue Event 순으로 호출

Page 65: I os 1

Segue - Etc.

• Custom Segue

• UIStoryboardSegue 상속

• perform method override

• source, Destination viewController

Page 66: I os 1

Segue - Etc.-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender •Segue Event 호출 시에 Source 부분에서 호출되는 함수. •데이터 전달 시 segue의 identifier로 어떤 segue인지 구분해서 Source, Destination의 정보를 조작 가능하다.

Page 67: I os 1

Segue - Etc.

Page 68: I os 1

Segue - Etc.• RelationShip

• NavigationController, TabViewController와 같이 RootViewController가 필요한 Controller들의 첫 RootView를 나타내기 위해서 쓰이는 Segue

• Push

• NavigationController에서 화면 전환을 위해 사용되는 Segue

• pushViewController에 대응되는 IB Segue

• Modal

• ModalView를 띄울 때 사용되는 Segue

• presentModalViewController와 대응되는 IBSegue

• Custom

• Custom Segue, 사용자 액션 지정 가능