iOS 앱 개발 강의 자료 #1
-
Upload
jeong-hoon-mo -
Category
Technology
-
view
270 -
download
3
Transcript of iOS 앱 개발 강의 자료 #1
![Page 1: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/1.jpg)
iOSiOS 개발개발2016.06.21
모정훈
![Page 2: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/2.jpg)
강사소개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](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/3.jpg)
목차- 샘플코드 , 유용한 정보 안내- iOS 앱의 동작 방식- Swift & Playground ( 실습 포함 )- Hello World ( 실습 포함 )- Storyboard ( 실습 포함 )- Auto Layout ( 실습 포함 )- UIComponents
![Page 4: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/4.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/5.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/6.jpg)
유용한 사이트- 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](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/7.jpg)
iOS App 의 구동- 실행- main 실행- UIApplicationMain()- applicationDidFinishLaunching:- EventLoop 진입- 작성한 코드 실행- 어플리케이션 종료- applicationWillTerminate:- 어플리케이션 종료
![Page 8: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/8.jpg)
The Structure of an App0 Model0 View0 Controller
![Page 9: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/9.jpg)
App Lifecycle0 iOS App Life Cycle
- Not Running- Inactive- Active- Background- Suspended
0 Demo- App Life Cycle
![Page 10: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/10.jpg)
App Lifecycle0 Example
- App Life Cycle
![Page 11: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/11.jpg)
Xcode0툴바
- 실행- 타겟설정- 에디터버튼- 보기버튼
0영역- 네비게이션- 에디터- 유틸리티
![Page 12: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/12.jpg)
Sample App# Objective-C
# Swift
![Page 13: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/13.jpg)
Swift - 변수0변수 선언 (Dynamic type check)
var 변수명 = 값 ;
var 변수명 : 자료형 ;
0다국어 지원 ( 한글 변수명 가능 )
0세미콜론 (;) 생략 가능
0헝가리언 표기법
![Page 14: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/14.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/15.jpg)
Swift - Optional0 Optional
- 값이 있을 수도 있고 없을 수도 있는 것 ?
- 문자열 “” 은 nil 인가 ? 숫자 0 은 nil 인가 ?
![Page 16: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/16.jpg)
Swift – Optional Binding0 Optional Binding
- 옵셔널 값의 존재를 확인 후 다른 변수에 대입 .-if let / if var, where 바인딩 후 조건
![Page 17: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/17.jpg)
Swift – Optional Chaining0 Optional Chaining
- 옵셔널 바인딩 과정을 간편하게- 옵셔널 변수 뒤에 ? 사용
![Page 18: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/18.jpg)
Swift – Optional Unwrapping0 Optional Binding
- 옵셔널 값의 존재를 확인 후 다른 변수에 대입 .
- if let / if var 사용- where 바인딩 후 조건
![Page 19: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/19.jpg)
Swift – 열거형 (Enum)0 다양한 자료형0 함수 내장0 중첩 표현
![Page 20: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/20.jpg)
Swift – 열거형 (Enum)0 다양한 자료형0 함수 내장0 중첩 표현
![Page 21: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/21.jpg)
Swift – 열거형 (Enum)0 다양한 자료형0 함수 내장0 중첩 표현
![Page 22: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/22.jpg)
Swift – Optional vs Enum0 Optional 은 Enum
![Page 23: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/23.jpg)
Swift – 튜플 (Tuple)0 Tuple
- 어떤 값들의 묶음 .
- 배열과 비슷하지만 길이가 고정되어 있음 .
![Page 24: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/24.jpg)
Swift – 튜플 (Tuple)0 Tuple 응용
- 여러 변수에 동시에 값을 지정- 무시하고 싶은 값은 언더바 (_) 를 사용
![Page 25: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/25.jpg)
Swift – 튜플 (Tuple)0 여러 값을 반환하는 함수
- 커피 이름을 입력하고 ( 커피 , 가격 ) 튜플을 반환 받는 함수
![Page 26: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/26.jpg)
Swift – 제어문 IF0 조건문에 괄호를 생략 가능0 조건문 이후 블럭 ({..}) 을 사용
![Page 27: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/27.jpg)
Swift – 제어문 SWITCH0 break 생략 가능 .0 범위를 지정하거나 튜플 사용이 가능 .0 임의의 변수 대입이 가능 .
![Page 28: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/28.jpg)
Swift – 제어문 SWITCH0 break 생략 가능하다 .0 범위를 지정하거나 튜플 자료형 사용이 가능하다 .0 임의의 변수 대입이 가능하다 .
![Page 29: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/29.jpg)
Swift – 제어문 SWITCH0 break 생략 가능하다 .0 범위를 지정하거나 튜플 자료형 사용이 가능하다 .0 임의의 변수 대입이 가능하다 .
![Page 30: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/30.jpg)
Swift – 제어문 FOR0 C-Style 없어진다고 ?
![Page 31: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/31.jpg)
Swift - 함수0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정0 파라미터 이름 변경 , 생략0 갯수가 정해지지 않은 파라미터 처리0 함수 안의 함수 , 함수안의 함수를 반환
![Page 32: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/32.jpg)
Swift - 함수0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정0 파라미터 이름 변경 , 생략0 갯수가 정해지지 않은 파라미터 처리0 함수 안의 함수 , 함수안의 함수를 반환
![Page 33: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/33.jpg)
Swift - 함수0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정0 파라미터 이름 변경 , 생략0 갯수가 정해지지 않은 파라미터 처리0 함수 안의 함수 , 함수안의 함수를 반환
![Page 34: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/34.jpg)
Swift - 함수0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정0 파라미터 이름 변경 , 생략0 갯수가 정해지지 않은 파라미터 처리0 함수 안의 함수 , 함수안의 함수를 반환
![Page 35: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/35.jpg)
Swift - 클로저0 중괄호 ({}) 로 감싸진 “ 실행가능한 코드 블럭”
![Page 36: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/36.jpg)
Swift - 클로저0 타입추론- 함수의 반환 타입으로 클로저에서 어떤 파라미터를 받는지- 어떤 타입을 반환하는지 알 수 있음
![Page 37: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/37.jpg)
Swift - 클로저0 라인 1 개 짜리 생략
![Page 38: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/38.jpg)
Swift - 클로저0 클로저를 파라미터로 활용
![Page 39: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/39.jpg)
Swift - 클로저0 클로저 활용하기
![Page 40: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/40.jpg)
Swift – 클래스와 구조체0 클래스
- class 로 정의- 생성자 init()- 상속 가능- 참조
0 구조체- struct 로 정의- 생성자 init()- 상속 불가- 복사
![Page 41: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/41.jpg)
Swift – 클래스와 구조체0 클래스 , 구조체 예문
![Page 42: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/42.jpg)
Swift – 클래스와 구조체0 클래스 , 구조체 차이
![Page 43: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/43.jpg)
Swift – 클래스와 구조체0 클래스 , 구조체 주의할 점
- 옵셔널 아닌 경우 초기값 필요- init 함수에서 self 키워드 사용시 super.ini() 실행 후 사용- deinit 메모리 해제된 직후 호출
![Page 44: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/44.jpg)
Swift – 속성0 값을 가지는 속성 (Stored Property) – 변수0 계산되는 속성 (Computed Property) – getter / setter
![Page 45: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/45.jpg)
Swift – 속성0 willSet, didSet – 속성 값의 변경 직전 / 직후 실행
- 속성과 관련된 UI 를 업데이트 , 특정 메소드 호출 등
![Page 46: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/46.jpg)
App Lifecycle #20 Example
- App Life Cycle 앱을 Swift 로 변환해보세요 .
![Page 47: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/47.jpg)
Sample App #10 Hello world!
- Objective-C- Swift
![Page 48: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/48.jpg)
StoryBoard0 Segue
- show- show detail- present modally- popover presentation- custom
![Page 49: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/49.jpg)
StoryBoard0 master view & detail view
![Page 50: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/50.jpg)
StoryBoard0 Segue 사용하기
- 단순 Segue 연결> 드래그 후 원하는 액션 선택
- 코드에서 Segue 연결 > 드래그로 Segue 생성 > Segue Identifier 설정 > 함수 연결
- 코드에서 Segue 로드 후 연결 > Storyboard ID 설정 > 함수에서 Storyboard 로드 > 로드된 Storyboard 에서 Storyboard ID 해당 ViewController 로드 > 함수 연결
![Page 51: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/51.jpg)
StoryBoard0프로젝트 전부 ?0프로젝트의 일부분 ?0 xib 만 사용 !0 Storyboard, xib 전혀 사용하지 않음 !0철학과 정책적인 부분이라 ..
![Page 52: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/52.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/53.jpg)
Auto Layout0 frame, bounds, center
![Page 54: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/54.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/55.jpg)
Auto Layout0 Example
![Page 56: iOS 앱 개발 강의 자료 #1](https://reader035.fdocuments.net/reader035/viewer/2022081420/58e97e5a1a28aba6498b4c6d/html5/thumbnails/56.jpg)
To be continue..