SlideShare a Scribd company logo
1 of 56
iOSiOS 개발개발
2016.06.21
모정훈
강사소개
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
- 열정과 리액션 , 질문과 피드백
- 아재개그 주의
목차
- 샘플코드 , 유용한 정보 안내
- iOS 앱의 동작 방식
- Swift & Playground ( 실습 포함 )
- Hello World ( 실습 포함 )
- Storyboard ( 실습 포함 )
- Auto Layout ( 실습 포함 )
- UIComponents
Sample Source #1
0 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 작성 )
Sample Source #2
0 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
유용한 사이트
- Developer Site
- https://developer.apple.com/library/ios/navigation/
- Start Developing iOS Apps Today
- https://developer.apple.com/library/ios/referencelibrary/GettingStarted/Develo
piOSAppsSwift/index.html
- iPhone Dev
- http://iphonedev.co.kr/
- Swift
- http://swift.leantra.kr/
- GitHub
- https://github.com/
iOS App 의 구동
- 실행
- main 실행
- UIApplicationMain()
- applicationDidFinishLaunching:
- EventLoop 진입
- 작성한 코드 실행
- 어플리케이션 종료
- applicationWillTerminate:
- 어플리케이션 종료
The Structure of an App
0 Model
0 View
0 Controller
App Lifecycle
0 iOS App Life Cycle
- Not Running
- Inactive
- Active
- Background
- Suspended
0 Demo
- App Life Cycle
App Lifecycle
0 Example
- App Life Cycle
Xcode
0 툴바
- 실행
- 타겟설정
- 에디터버튼
- 보기버튼
0 영역
- 네비게이션
- 에디터
- 유틸리티
Sample App
# Objective-C
# Swift
Swift - 변수
0 변수 선언 (Dynamic type check)
var 변수명 = 값 ;
var 변수명 : 자료형 ;
0 다국어 지원 ( 한글 변수명 가능 )
0 세미콜론 (;) 생략 가능
0 헝가리언 표기법
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
Swift - Optional
0 Optional
- 값이 있을 수도 있고 없을 수도 있는 것 ?
- ”문자열 “ 은 nil 인가 ? 숫자 0 은 nil 인가 ?
Swift – Optional Binding
0 Optional Binding
- 옵셔널 값의 존재를 확인 후 다른 변수에 대입 .
-if let / if var, where 바인딩 후 조건
Swift – Optional Chaining
0 Optional Chaining
- 옵셔널 바인딩 과정을 간편하게
- 옵셔널 변수 뒤에 ? 사용
Swift – Optional Unwrapping
0 Optional Binding
- 옵셔널 값의 존재를 확인 후 다른 변수에 대입 .
- if let / if var 사용
- where 바인딩 후 조건
Swift – 열거형 (Enum)
0 다양한 자료형
0 함수 내장
0 중첩 표현
Swift – 열거형 (Enum)
0 다양한 자료형
0 함수 내장
0 중첩 표현
Swift – 열거형 (Enum)
0 다양한 자료형
0 함수 내장
0 중첩 표현
Swift – Optional vs Enum
0 Optional 은 Enum
Swift – 튜플 (Tuple)
0 Tuple
- 어떤 값들의 묶음 .
- 배열과 비슷하지만 길이가 고정되어 있음 .
Swift – 튜플 (Tuple)
0 Tuple 응용
- 여러 변수에 동시에 값을 지정
- 무시하고 싶은 값은 언더바 (_) 를 사용
Swift – 튜플 (Tuple)
0 여러 값을 반환하는 함수
- 커피 이름을 입력하고 ( 커피 , 가격 ) 튜플을 반환 받는 함수
Swift – 제어문 IF
0 조건문에 괄호를 생략 가능
0 조건문 이후 블럭 ({..}) 을 사용
Swift – 제어문 SWITCH
0 break 생략 가능 .
0 범위를 지정하거나 튜플 사용이 가능 .
0 임의의 변수 대입이 가능 .
Swift – 제어문 SWITCH
0 break 생략 가능하다 .
0 범위를 지정하거나 튜플 자료형 사용이 가능하다 .
0 임의의 변수 대입이 가능하다 .
Swift – 제어문 SWITCH
0 break 생략 가능하다 .
0 범위를 지정하거나 튜플 자료형 사용이 가능하다 .
0 임의의 변수 대입이 가능하다 .
Swift – 제어문 FOR
0 C-Style 없어진다고 ?
Swift - 함수
0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정
0 파라미터 이름 변경 , 생략
0 갯수가 정해지지 않은 파라미터 처리
0 함수 안의 함수 , 함수안의 함수를 반환
Swift - 함수
0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정
0 파라미터 이름 변경 , 생략
0 갯수가 정해지지 않은 파라미터 처리
0 함수 안의 함수 , 함수안의 함수를 반환
Swift - 함수
0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정
0 파라미터 이름 변경 , 생략
0 갯수가 정해지지 않은 파라미터 처리
0 함수 안의 함수 , 함수안의 함수를 반환
Swift - 함수
0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정
0 파라미터 이름 변경 , 생략
0 갯수가 정해지지 않은 파라미터 처리
0 함수 안의 함수 , 함수안의 함수를 반환
Swift - 클로저
0 중괄호 ({}) ”로 감싸진 “실행가능한 코드 블럭
Swift - 클로저
0 타입추론
- 함수의 반환 타입으로 클로저에서 어떤 파라미터를 받는지
- 어떤 타입을 반환하는지 알 수 있음
Swift - 클로저
0 라인 1 개 짜리 생략
Swift - 클로저
0 클로저를 파라미터로 활용
Swift - 클로저
0 클로저 활용하기
Swift – 클래스와 구조체
0 클래스
- class 로 정의
- 생성자 init()
- 상속 가능
- 참조
0 구조체
- struct 로 정의
- 생성자 init()
- 상속 불가
- 복사
Swift – 클래스와 구조체
0 클래스 , 구조체 예문
Swift – 클래스와 구조체
0 클래스 , 구조체 차이
Swift – 클래스와 구조체
0 클래스 , 구조체 주의할 점
- 옵셔널 아닌 경우 초기값 필요
- init 함수에서 self 키워드 사용시 super.ini() 실행 후 사용
- deinit 메모리 해제된 직후 호출
Swift – 속성
0 값을 가지는 속성 (Stored Property) – 변수
0 계산되는 속성 (Computed Property) – getter / setter
Swift – 속성
0 willSet, didSet – 속성 값의 변경 직전 / 직후 실행
- 속성과 관련된 UI 를 업데이트 , 특정 메소드 호출 등
App Lifecycle #2
0 Example
- App Life Cycle 앱을 Swift 로 변환해보세요 .
Sample App #1
0 Hello world!
- Objective-C
- Swift
StoryBoard
0 Segue
- show
- show detail
- present modally
- popover presentation
- custom
StoryBoard
0 master view & detail view
StoryBoard
0 Segue 사용하기
- 단순 Segue 연결
> 드래그 후 원하는 액션 선택
- 코드에서 Segue 연결
> 드래그로 Segue 생성
> Segue Identifier 설정
> 함수 연결
- 코드에서 Segue 로드 후 연결
> Storyboard ID 설정
> 함수에서 Storyboard 로드
> 로드된 Storyboard 에서 Storyboard ID 해당 ViewController 로드
> 함수 연결
StoryBoard
0 프로젝트 전부 ?
0 프로젝트의 일부분 ?
0 xib 만 사용 !
0 Storyboard, xib 전혀 사용하지 않음 !
0 철학과 정책적인 부분이라 ..
Auto Layout
0 Constraints 기반의 레이아웃
0 WWDC 2011 OS X & Cocoa Auto Layout.. for MAC
0 WWDC 2012 iOS 6 이상
0 frame, bound, center 속성을 조절
0 좌표가 아닌 제약을 고려해야 함
Auto Layout
0 frame, bounds, center
Auto Layout
0 Y = m * x + b
targetView.attribute =
multiplier * referenceView.attribute + constant
- targetView : 제약을 추가할 대상
- referenceView : 대상 뷰의 제약을 적용할 때 참조할
뷰
- attribute : 제약에 대한 속성 (left, right, top, bottom,
leadig, trailing, width, height, centerX, centerY,
baseline)
Auto Layout
0 Example
To be continue..

More Related Content

Similar to iOS 앱 개발 강의 자료 #1

[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍흥배 최
 
[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어NAVER D2
 
Oop design principle SOLID
Oop design principle SOLIDOop design principle SOLID
Oop design principle SOLIDRyan Park
 
[C++ Korea 2nd Seminar] Ranges for The Cpp Standard Library
[C++ Korea 2nd Seminar] Ranges for The Cpp Standard Library[C++ Korea 2nd Seminar] Ranges for The Cpp Standard Library
[C++ Korea 2nd Seminar] Ranges for The Cpp Standard LibraryDongMin Choi
 
[Osxdev]4.swift
[Osxdev]4.swift[Osxdev]4.swift
[Osxdev]4.swiftNAVER D2
 
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기NAVER Engineering
 
Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)Yong Heui Cho
 
C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013명신 김
 
MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Androidtaeinkim6
 
Swift5 vs objective c
Swift5 vs objective cSwift5 vs objective c
Swift5 vs objective cBill Kim
 
V8 add on with middleware modules
V8 add on with middleware modulesV8 add on with middleware modules
V8 add on with middleware modulesJay Kim
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장Seongchan Kang
 

Similar to iOS 앱 개발 강의 자료 #1 (14)

[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
 
[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어
 
ES6 for Node.js Study
ES6 for Node.js StudyES6 for Node.js Study
ES6 for Node.js Study
 
Oop design principle SOLID
Oop design principle SOLIDOop design principle SOLID
Oop design principle SOLID
 
[C++ Korea 2nd Seminar] Ranges for The Cpp Standard Library
[C++ Korea 2nd Seminar] Ranges for The Cpp Standard Library[C++ Korea 2nd Seminar] Ranges for The Cpp Standard Library
[C++ Korea 2nd Seminar] Ranges for The Cpp Standard Library
 
[Osxdev]4.swift
[Osxdev]4.swift[Osxdev]4.swift
[Osxdev]4.swift
 
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
 
Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)
 
C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013
 
MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Android
 
Swift5 vs objective c
Swift5 vs objective cSwift5 vs objective c
Swift5 vs objective c
 
V8 add on with middleware modules
V8 add on with middleware modulesV8 add on with middleware modules
V8 add on with middleware modules
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장
 

iOS 앱 개발 강의 자료 #1

  • 2. 강사소개 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 - 열정과 리액션 , 질문과 피드백 - 아재개그 주의
  • 3. 목차 - 샘플코드 , 유용한 정보 안내 - iOS 앱의 동작 방식 - Swift & Playground ( 실습 포함 ) - Hello World ( 실습 포함 ) - Storyboard ( 실습 포함 ) - Auto Layout ( 실습 포함 ) - UIComponents
  • 4. Sample Source #1 0 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 작성 )
  • 5. Sample Source #2 0 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
  • 6. 유용한 사이트 - Developer Site - https://developer.apple.com/library/ios/navigation/ - Start Developing iOS Apps Today - https://developer.apple.com/library/ios/referencelibrary/GettingStarted/Develo piOSAppsSwift/index.html - iPhone Dev - http://iphonedev.co.kr/ - Swift - http://swift.leantra.kr/ - GitHub - https://github.com/
  • 7. iOS App 의 구동 - 실행 - main 실행 - UIApplicationMain() - applicationDidFinishLaunching: - EventLoop 진입 - 작성한 코드 실행 - 어플리케이션 종료 - applicationWillTerminate: - 어플리케이션 종료
  • 8. The Structure of an App 0 Model 0 View 0 Controller
  • 9. App Lifecycle 0 iOS App Life Cycle - Not Running - Inactive - Active - Background - Suspended 0 Demo - App Life Cycle
  • 10. App Lifecycle 0 Example - App Life Cycle
  • 11. Xcode 0 툴바 - 실행 - 타겟설정 - 에디터버튼 - 보기버튼 0 영역 - 네비게이션 - 에디터 - 유틸리티
  • 13. Swift - 변수 0 변수 선언 (Dynamic type check) var 변수명 = 값 ; var 변수명 : 자료형 ; 0 다국어 지원 ( 한글 변수명 가능 ) 0 세미콜론 (;) 생략 가능 0 헝가리언 표기법
  • 14. 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
  • 15. Swift - Optional 0 Optional - 값이 있을 수도 있고 없을 수도 있는 것 ? - ”문자열 “ 은 nil 인가 ? 숫자 0 은 nil 인가 ?
  • 16. Swift – Optional Binding 0 Optional Binding - 옵셔널 값의 존재를 확인 후 다른 변수에 대입 . -if let / if var, where 바인딩 후 조건
  • 17. Swift – Optional Chaining 0 Optional Chaining - 옵셔널 바인딩 과정을 간편하게 - 옵셔널 변수 뒤에 ? 사용
  • 18. Swift – Optional Unwrapping 0 Optional Binding - 옵셔널 값의 존재를 확인 후 다른 변수에 대입 . - if let / if var 사용 - where 바인딩 후 조건
  • 19. Swift – 열거형 (Enum) 0 다양한 자료형 0 함수 내장 0 중첩 표현
  • 20. Swift – 열거형 (Enum) 0 다양한 자료형 0 함수 내장 0 중첩 표현
  • 21. Swift – 열거형 (Enum) 0 다양한 자료형 0 함수 내장 0 중첩 표현
  • 22. Swift – Optional vs Enum 0 Optional 은 Enum
  • 23. Swift – 튜플 (Tuple) 0 Tuple - 어떤 값들의 묶음 . - 배열과 비슷하지만 길이가 고정되어 있음 .
  • 24. Swift – 튜플 (Tuple) 0 Tuple 응용 - 여러 변수에 동시에 값을 지정 - 무시하고 싶은 값은 언더바 (_) 를 사용
  • 25. Swift – 튜플 (Tuple) 0 여러 값을 반환하는 함수 - 커피 이름을 입력하고 ( 커피 , 가격 ) 튜플을 반환 받는 함수
  • 26. Swift – 제어문 IF 0 조건문에 괄호를 생략 가능 0 조건문 이후 블럭 ({..}) 을 사용
  • 27. Swift – 제어문 SWITCH 0 break 생략 가능 . 0 범위를 지정하거나 튜플 사용이 가능 . 0 임의의 변수 대입이 가능 .
  • 28. Swift – 제어문 SWITCH 0 break 생략 가능하다 . 0 범위를 지정하거나 튜플 자료형 사용이 가능하다 . 0 임의의 변수 대입이 가능하다 .
  • 29. Swift – 제어문 SWITCH 0 break 생략 가능하다 . 0 범위를 지정하거나 튜플 자료형 사용이 가능하다 . 0 임의의 변수 대입이 가능하다 .
  • 30. Swift – 제어문 FOR 0 C-Style 없어진다고 ?
  • 31. Swift - 함수 0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정 0 파라미터 이름 변경 , 생략 0 갯수가 정해지지 않은 파라미터 처리 0 함수 안의 함수 , 함수안의 함수를 반환
  • 32. Swift - 함수 0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정 0 파라미터 이름 변경 , 생략 0 갯수가 정해지지 않은 파라미터 처리 0 함수 안의 함수 , 함수안의 함수를 반환
  • 33. Swift - 함수 0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정 0 파라미터 이름 변경 , 생략 0 갯수가 정해지지 않은 파라미터 처리 0 함수 안의 함수 , 함수안의 함수를 반환
  • 34. Swift - 함수 0 func 키워드로 선언 , ‘->’ 로 반환 타입 지정 0 파라미터 이름 변경 , 생략 0 갯수가 정해지지 않은 파라미터 처리 0 함수 안의 함수 , 함수안의 함수를 반환
  • 35. Swift - 클로저 0 중괄호 ({}) ”로 감싸진 “실행가능한 코드 블럭
  • 36. Swift - 클로저 0 타입추론 - 함수의 반환 타입으로 클로저에서 어떤 파라미터를 받는지 - 어떤 타입을 반환하는지 알 수 있음
  • 37. Swift - 클로저 0 라인 1 개 짜리 생략
  • 38. Swift - 클로저 0 클로저를 파라미터로 활용
  • 39. Swift - 클로저 0 클로저 활용하기
  • 40. Swift – 클래스와 구조체 0 클래스 - class 로 정의 - 생성자 init() - 상속 가능 - 참조 0 구조체 - struct 로 정의 - 생성자 init() - 상속 불가 - 복사
  • 41. Swift – 클래스와 구조체 0 클래스 , 구조체 예문
  • 42. Swift – 클래스와 구조체 0 클래스 , 구조체 차이
  • 43. Swift – 클래스와 구조체 0 클래스 , 구조체 주의할 점 - 옵셔널 아닌 경우 초기값 필요 - init 함수에서 self 키워드 사용시 super.ini() 실행 후 사용 - deinit 메모리 해제된 직후 호출
  • 44. Swift – 속성 0 값을 가지는 속성 (Stored Property) – 변수 0 계산되는 속성 (Computed Property) – getter / setter
  • 45. Swift – 속성 0 willSet, didSet – 속성 값의 변경 직전 / 직후 실행 - 속성과 관련된 UI 를 업데이트 , 특정 메소드 호출 등
  • 46. App Lifecycle #2 0 Example - App Life Cycle 앱을 Swift 로 변환해보세요 .
  • 47. Sample App #1 0 Hello world! - Objective-C - Swift
  • 48. StoryBoard 0 Segue - show - show detail - present modally - popover presentation - custom
  • 49. StoryBoard 0 master view & detail view
  • 50. StoryBoard 0 Segue 사용하기 - 단순 Segue 연결 > 드래그 후 원하는 액션 선택 - 코드에서 Segue 연결 > 드래그로 Segue 생성 > Segue Identifier 설정 > 함수 연결 - 코드에서 Segue 로드 후 연결 > Storyboard ID 설정 > 함수에서 Storyboard 로드 > 로드된 Storyboard 에서 Storyboard ID 해당 ViewController 로드 > 함수 연결
  • 51. StoryBoard 0 프로젝트 전부 ? 0 프로젝트의 일부분 ? 0 xib 만 사용 ! 0 Storyboard, xib 전혀 사용하지 않음 ! 0 철학과 정책적인 부분이라 ..
  • 52. Auto Layout 0 Constraints 기반의 레이아웃 0 WWDC 2011 OS X & Cocoa Auto Layout.. for MAC 0 WWDC 2012 iOS 6 이상 0 frame, bound, center 속성을 조절 0 좌표가 아닌 제약을 고려해야 함
  • 53. Auto Layout 0 frame, bounds, center
  • 54. Auto Layout 0 Y = m * x + b targetView.attribute = multiplier * referenceView.attribute + constant - targetView : 제약을 추가할 대상 - referenceView : 대상 뷰의 제약을 적용할 때 참조할 뷰 - attribute : 제약에 대한 속성 (left, right, top, bottom, leadig, trailing, width, height, centerX, centerY, baseline)