ios 앱 개발 강의 자료 #1

56
iOS iOS 개개 개개 2016.06.21 개개개

Upload: jeong-hoon-mo

Post on 09-Apr-2017

270 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: iOS 앱 개발 강의 자료 #1

iOSiOS 개발개발2016.06.21

모정훈

Page 2: iOS 앱 개발 강의 자료 #1

강사소개0 ( 주 )SK 플래닛 2013 ~ 현재

- Project-ANNE (iOS)- Shopkick Companion App (iOS)- OCB(OK 캐시백 ) App (iOS)- Hoppin VoD Player (iOS, Android)

0 약력- 정보보호대학원 박사과정- ( 주 ) 네이버 2010 ~ 2013- SK 커뮤니케이션즈 ( 주 ) 2008 ~ 2010- 육군본부 전산체계 개발실 2003 ~ 2005

0 준비물- Mac OS, Xcode- 열정과 리액션 , 질문과 피드백- 아재개그 주의

Page 3: iOS 앱 개발 강의 자료 #1

목차- 샘플코드 , 유용한 정보 안내- iOS 앱의 동작 방식- Swift & Playground ( 실습 포함 )- Hello World ( 실습 포함 )- Storyboard ( 실습 포함 )- Auto Layout ( 실습 포함 )- UIComponents

Page 4: iOS 앱 개발 강의 자료 #1

Sample Source #10 01.AppLifeCycle

- AppLifeCycleObjectiveC (Objective-C 작성 )- AppLifeCycleSwift (Swift 작성 )

0 02.HelloWorlds- HelloWorldObjectiveC (Objective-C 작성 )- HelloWorldSwift (Swift 작성 )

0 03.StoryBoards- StoryBoardSwift01 (Segue 의 3 가지 방식 샘플 )- StoryBoardSwift02 ( 다른 Storyboard 파일의 ViewController 로드 )

0 04.AutoLayout- AutoLayoutSwift

0 05.XIBvsNoneXIB- NoneIBTabbar (XIB 없이 코드로 Tabbar 작성 )- StoryBoardTabbar (IB/StoryBoard 로 Tabbar 작성 )

Page 5: iOS 앱 개발 강의 자료 #1

Sample Source #20 01.TestTableViewSwift

- TableView, Delegate/DataSource 이해- https://github.com/picomax/TableViewSwift

0 02.TodoMemoSwift- 데이터 저장 (UserDefaults), 화면전환 이해- https://github.com/picomax/TodoMemo

0 03.CatalogSwift- Tabbar Controller, Key/Value 코딩의 이해- https://github.com/picomax/Catalog

Page 6: iOS 앱 개발 강의 자료 #1

유용한 사이트- Developer Site

- https://developer.apple.com/library/ios/navigation/

- Start Developing iOS Apps Today- https://developer.apple.com/library/ios/referencelibrary/GettingStarted/

DevelopiOSAppsSwift/index.html

- iPhone Dev- http://iphonedev.co.kr/

- Swift- http://swift.leantra.kr/

- GitHub- https://github.com/

Page 7: iOS 앱 개발 강의 자료 #1

iOS App 의 구동- 실행- main 실행- UIApplicationMain()- applicationDidFinishLaunching:- EventLoop 진입- 작성한 코드 실행- 어플리케이션 종료- applicationWillTerminate:- 어플리케이션 종료

Page 8: iOS 앱 개발 강의 자료 #1

The Structure of an App0 Model0 View0 Controller

Page 9: iOS 앱 개발 강의 자료 #1

App Lifecycle0 iOS App Life Cycle

- Not Running- Inactive- Active- Background- Suspended

0 Demo- App Life Cycle

Page 10: iOS 앱 개발 강의 자료 #1

App Lifecycle0 Example

- App Life Cycle

Page 11: iOS 앱 개발 강의 자료 #1

Xcode0툴바

- 실행- 타겟설정- 에디터버튼- 보기버튼

0영역- 네비게이션- 에디터- 유틸리티

Page 12: iOS 앱 개발 강의 자료 #1

Sample App# Objective-C

# Swift

Page 13: iOS 앱 개발 강의 자료 #1

Swift - 변수0변수 선언 (Dynamic type check)

var 변수명 = 값 ;

var 변수명 : 자료형 ;

0다국어 지원 ( 한글 변수명 가능 )

0세미콜론 (;) 생략 가능

0헝가리언 표기법

Page 14: iOS 앱 개발 강의 자료 #1

Swift - 자료형0 String 문자열0 Array<T> 배열0 Dictionary<T,S> 사전형 (T 형의 키 , S 형의 값 )0 Int8 정수형 (-128 ~ 127)0 Int16 정수형 (-32,768 ~ 32,767)0 Int64 정수형 (-2,147,483,648 ~ 2,147,483,647)0 Uint8 정수형 (0 ~ 255)0 Uint16 정수형 (0 ~ 65,535)0 Uint32 정수형 (0 ~ 4,294,967,295)0 Uint64 정수형 (0 ~ 18,446,744,073,709,551,615)0 float32 비트의 부동소수점 데이터0 Double64 비트의 부동소수점 데이터 (float32 보다 정밀 )0 Bool true | false

Page 15: iOS 앱 개발 강의 자료 #1

Swift - Optional0 Optional

- 값이 있을 수도 있고 없을 수도 있는 것 ?

- 문자열 “” 은 nil 인가 ? 숫자 0 은 nil 인가 ?

Page 16: iOS 앱 개발 강의 자료 #1

Swift – Optional Binding0 Optional Binding

- 옵셔널 값의 존재를 확인 후 다른 변수에 대입 .-if let / if var, where 바인딩 후 조건

Page 17: iOS 앱 개발 강의 자료 #1

Swift – Optional Chaining0 Optional Chaining

- 옵셔널 바인딩 과정을 간편하게- 옵셔널 변수 뒤에 ? 사용

Page 18: iOS 앱 개발 강의 자료 #1

Swift – Optional Unwrapping0 Optional Binding

- 옵셔널 값의 존재를 확인 후 다른 변수에 대입 .

- if let / if var 사용- where 바인딩 후 조건

Page 19: iOS 앱 개발 강의 자료 #1

Swift – 열거형 (Enum)0 다양한 자료형0 함수 내장0 중첩 표현

Page 20: iOS 앱 개발 강의 자료 #1

Swift – 열거형 (Enum)0 다양한 자료형0 함수 내장0 중첩 표현

Page 21: iOS 앱 개발 강의 자료 #1

Swift – 열거형 (Enum)0 다양한 자료형0 함수 내장0 중첩 표현

Page 22: iOS 앱 개발 강의 자료 #1

Swift – Optional vs Enum0 Optional 은 Enum

Page 23: iOS 앱 개발 강의 자료 #1

Swift – 튜플 (Tuple)0 Tuple

- 어떤 값들의 묶음 .

- 배열과 비슷하지만 길이가 고정되어 있음 .

Page 24: iOS 앱 개발 강의 자료 #1

Swift – 튜플 (Tuple)0 Tuple 응용

- 여러 변수에 동시에 값을 지정- 무시하고 싶은 값은 언더바 (_) 를 사용

Page 25: iOS 앱 개발 강의 자료 #1

Swift – 튜플 (Tuple)0 여러 값을 반환하는 함수

- 커피 이름을 입력하고 ( 커피 , 가격 ) 튜플을 반환 받는 함수

Page 26: iOS 앱 개발 강의 자료 #1

Swift – 제어문 IF0 조건문에 괄호를 생략 가능0 조건문 이후 블럭 ({..}) 을 사용

Page 27: iOS 앱 개발 강의 자료 #1

Swift – 제어문 SWITCH0 break 생략 가능 .0 범위를 지정하거나 튜플 사용이 가능 .0 임의의 변수 대입이 가능 .

Page 28: iOS 앱 개발 강의 자료 #1

Swift – 제어문 SWITCH0 break 생략 가능하다 .0 범위를 지정하거나 튜플 자료형 사용이 가능하다 .0 임의의 변수 대입이 가능하다 .

Page 29: iOS 앱 개발 강의 자료 #1

Swift – 제어문 SWITCH0 break 생략 가능하다 .0 범위를 지정하거나 튜플 자료형 사용이 가능하다 .0 임의의 변수 대입이 가능하다 .

Page 30: iOS 앱 개발 강의 자료 #1

Swift – 제어문 FOR0 C-Style 없어진다고 ?

Page 31: iOS 앱 개발 강의 자료 #1

Swift - 함수0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정0 파라미터 이름 변경 , 생략0 갯수가 정해지지 않은 파라미터 처리0 함수 안의 함수 , 함수안의 함수를 반환

Page 32: iOS 앱 개발 강의 자료 #1

Swift - 함수0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정0 파라미터 이름 변경 , 생략0 갯수가 정해지지 않은 파라미터 처리0 함수 안의 함수 , 함수안의 함수를 반환

Page 33: iOS 앱 개발 강의 자료 #1

Swift - 함수0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정0 파라미터 이름 변경 , 생략0 갯수가 정해지지 않은 파라미터 처리0 함수 안의 함수 , 함수안의 함수를 반환

Page 34: iOS 앱 개발 강의 자료 #1

Swift - 함수0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정0 파라미터 이름 변경 , 생략0 갯수가 정해지지 않은 파라미터 처리0 함수 안의 함수 , 함수안의 함수를 반환

Page 35: iOS 앱 개발 강의 자료 #1

Swift - 클로저0 중괄호 ({}) 로 감싸진 “ 실행가능한 코드 블럭”

Page 36: iOS 앱 개발 강의 자료 #1

Swift - 클로저0 타입추론- 함수의 반환 타입으로 클로저에서 어떤 파라미터를 받는지- 어떤 타입을 반환하는지 알 수 있음

Page 37: iOS 앱 개발 강의 자료 #1

Swift - 클로저0 라인 1 개 짜리 생략

Page 38: iOS 앱 개발 강의 자료 #1

Swift - 클로저0 클로저를 파라미터로 활용

Page 39: iOS 앱 개발 강의 자료 #1

Swift - 클로저0 클로저 활용하기

Page 40: iOS 앱 개발 강의 자료 #1

Swift – 클래스와 구조체0 클래스

- class 로 정의- 생성자 init()- 상속 가능- 참조

0 구조체- struct 로 정의- 생성자 init()- 상속 불가- 복사

Page 41: iOS 앱 개발 강의 자료 #1

Swift – 클래스와 구조체0 클래스 , 구조체 예문

Page 42: iOS 앱 개발 강의 자료 #1

Swift – 클래스와 구조체0 클래스 , 구조체 차이

Page 43: iOS 앱 개발 강의 자료 #1

Swift – 클래스와 구조체0 클래스 , 구조체 주의할 점

- 옵셔널 아닌 경우 초기값 필요- init 함수에서 self 키워드 사용시 super.ini() 실행 후 사용- deinit 메모리 해제된 직후 호출

Page 44: iOS 앱 개발 강의 자료 #1

Swift – 속성0 값을 가지는 속성 (Stored Property) – 변수0 계산되는 속성 (Computed Property) – getter / setter

Page 45: iOS 앱 개발 강의 자료 #1

Swift – 속성0 willSet, didSet – 속성 값의 변경 직전 / 직후 실행

- 속성과 관련된 UI 를 업데이트 , 특정 메소드 호출 등

Page 46: iOS 앱 개발 강의 자료 #1

App Lifecycle #20 Example

- App Life Cycle 앱을 Swift 로 변환해보세요 .

Page 47: iOS 앱 개발 강의 자료 #1

Sample App #10 Hello world!

- Objective-C- Swift

Page 48: iOS 앱 개발 강의 자료 #1

StoryBoard0 Segue

- show- show detail- present modally- popover presentation- custom

Page 49: iOS 앱 개발 강의 자료 #1

StoryBoard0 master view & detail view

Page 50: iOS 앱 개발 강의 자료 #1

StoryBoard0 Segue 사용하기

- 단순 Segue 연결> 드래그 후 원하는 액션 선택

- 코드에서 Segue 연결 > 드래그로 Segue 생성 > Segue Identifier 설정 > 함수 연결

- 코드에서 Segue 로드 후 연결 > Storyboard ID 설정 > 함수에서 Storyboard 로드 > 로드된 Storyboard 에서 Storyboard ID 해당 ViewController 로드 > 함수 연결

Page 51: iOS 앱 개발 강의 자료 #1

StoryBoard0프로젝트 전부 ?0프로젝트의 일부분 ?0 xib 만 사용 !0 Storyboard, xib 전혀 사용하지 않음 !0철학과 정책적인 부분이라 ..

Page 52: iOS 앱 개발 강의 자료 #1

Auto Layout0 Constraints 기반의 레이아웃0 WWDC 2011 OS X & Cocoa Auto Layout.. for MAC0 WWDC 2012 iOS 6 이상0 frame, bound, center 속성을 조절0 좌표가 아닌 제약을 고려해야 함

Page 53: iOS 앱 개발 강의 자료 #1

Auto Layout0 frame, bounds, center

Page 54: iOS 앱 개발 강의 자료 #1

Auto Layout0 Y = m * x + b

targetView.attribute =multiplier * referenceView.attribute + constant

- targetView : 제약을 추가할 대상- referenceView : 대상 뷰의 제약을 적용할 때 참조할 뷰- attribute : 제약에 대한 속성 (left, right, top, bottom, leadig, trailing, width, height, centerX, centerY, baseline)

Page 55: iOS 앱 개발 강의 자료 #1

Auto Layout0 Example

Page 56: iOS 앱 개발 강의 자료 #1

To be continue..