1. 재료 살펴보기
1.1Protocol 이란?
1.2 POP 란?
2. 찍어 먹어 보기
2.1 익숙한 예제를 통해서 맛보기.
2.2 간단한 문제 상황 해결해 보기.
3. 맛집 구경하기
3.1 Apple에서 소개한 활용 방법 구경하기.
3.1 TOSS에서 활용한 방법 구경하기.
4. 더 생각해 보기
4.1 Protocol의 성능 간단히 알아보기.
4.2 주의해야 할 점 생각해 보기.
2
ⓒ NAVER ConnectFoundation 4
1.1 Protocol 이란?
01 02 03
모든 타입에 적용 가능
Class와는 다르게 Struct, Enum, Protocol등 모든
타입에 채택/상속이 가능하다.
다중 채택/상속 가능
Class와는 다르게 한 번에 여러개의 Protocol을
채택/상속할 수 있다.
default implementation 구현
가능
protocol을 상속/채택한 모든 타입에 같은 구현
을 제공할 수 있다.
프로토콜이란 메서드, 프로퍼티, 다른 필수요소들을 정의한 것. 청사진.
5.
ⓒ NAVER ConnectFoundation 5
1.2 POP 란?
# Protocol Oriented Programming
한마디로
Flexible, Reusable
• 한번 만든 Protocol을 모든 타입에 적용이 가능함.
• extension을 통해 채택이 가능하여 무한한 확장성을 지님.
• 다중 상속/채택이 가능하여 Protocol을 여러 곳에서 재활용 가능.
• associatedtype을 통해 Generic한 구조를 만들 수 있음.
• default implementation을 통해 반복되는 코드를 줄일 수 있습니다.
https://developer.apple.com/documentation/foundation/nscoding
6.
ⓒ NAVER ConnectFoundation 6
1.2 POP 란?
POP를 적극적으로 활용하는 Apple
ⓒ NAVER ConnectFoundation 8
2.1 찍어 먹어보기 – 익숙한 예제
사각형 A 사각형 B 사각형 C 사각형 D
크기 길이 120, 높이 100 길이 120, 높이 100 길이 120, 높이 100 길이 120, 높이 100
색 변경 O X O O
투명도 변경 O O O X
객체 저장 X O X O
9.
ⓒ NAVER ConnectFoundation 9
2.1 찍어 먹어보기 – 익숙한 예제
사각형 A 사각형 B 사각형 C 사각형 D
크기 길이 120, 높이 100 길이 120, 높이 100 길이 120, 높이 100 길이 120, 높이 100
색 변경 O X O O
투명도 변경 O O O X
객체 저장 X O X O
10.
ⓒ NAVER ConnectFoundation 10
2.1 찍어 먹어보기 – 익숙한 예제
사각형 A 사각형 B 사각형 C 사각형 D
색 변경 O X O O
투명도 변경 O O O X
객체 저장 X O X O
공통적인 기능을 갖는
BaseRectView BaseRectView를 상속
11.
ⓒ NAVER ConnectFoundation 11
2.1 찍어 먹어보기 – 익숙한 예제
사각형 A 사각형 B 사각형 C 사각형 D
색 변경 O X O O
투명도 변경 O O O X
객체 저장 X O X O
12.
ⓒ NAVER ConnectFoundation 12
2.1 찍어 먹어보기 – 익숙한 예제
사각형 A 사각형 B 사각형 C 사각형 D
색 변경 O X O O
투명도 변경 O O O X
객체 저장 X O X O
colorChangable
alphaChangable
savable
13.
ⓒ NAVER ConnectFoundation 13
2.1 찍어 먹어보기 – 익숙한 예제
사각형 A 사각형 B 사각형 C 사각형 D
색 변경 O X O O
투명도 변경 O O O X
객체 저장 X O X O
14.
ⓒ NAVER ConnectFoundation 14
2.1 찍어 먹어보기 – 익숙한 예제
사각형 A 사각형 B 사각형 C 사각형 D
색 변경 O X O O
투명도 변경 O O O X
객체 저장 X O X O
15.
ⓒ NAVER ConnectFoundation 15
2.1 찍어 먹어보기 – 익숙한 예제
사각형 A 사각형 B 사각형 C 사각형 D
색 변경 O X O O
투명도 변경 O O O X
객체 저장 X O X O
16.
ⓒ NAVER ConnectFoundation 16
2.1 찍어 먹어보기 – 익숙한 예제
사각형 A 사각형 B 사각형 C 사각형 D
색 변경 O X O O
투명도 변경 O O O X
객체 저장 X O X O
ⓒ NAVER ConnectFoundation 24
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
25.
ⓒ NAVER ConnectFoundation 25
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
26.
ⓒ NAVER ConnectFoundation 26
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
기본적인 구현
27.
ⓒ NAVER ConnectFoundation 27
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
Layout을 분리
28.
ⓒ NAVER ConnectFoundation 28
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
29.
ⓒ NAVER ConnectFoundation 29
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
30.
ⓒ NAVER ConnectFoundation 30
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
UITest with Code
31.
ⓒ NAVER ConnectFoundation 31
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
32.
ⓒ NAVER ConnectFoundation 32
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
SpriteKit
추가적인 기능
33.
ⓒ NAVER ConnectFoundation 33
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
34.
ⓒ NAVER ConnectFoundation 34
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
35.
ⓒ NAVER ConnectFoundation 35
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
36.
ⓒ NAVER ConnectFoundation 36
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
heterogeneous 상태
37.
ⓒ NAVER ConnectFoundation 37
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
homogeneous 상태
38.
ⓒ NAVER ConnectFoundation 38
3.1 맛집 구경하기 - Protocol and Value Oriented Programming in UIKit Apps
Protocol and Value Oriented Programming in UIKit Apps WWDC 2016
ⓒ NAVER ConnectFoundation 44
4.1 더 생각해 보기 - Protocol의 성능
생각보다 큰 비용이 드는 Protocol
Understanding Swift Performance -WWDC 16
43.
ⓒ NAVER ConnectFoundation 45
4.1 더 생각해 보기 - Protocol의 성능
생각보다 큰 비용이 드는 Protocol
Understanding Swift Performance WWDC 2016
44.
ⓒ NAVER ConnectFoundation 47
4.2 더 생각해 보기 – POP를 구현할 때 주의해야 할 점 1
default implementation
• protocol extension을 통해 구현한 것들은 override 되지 않는다.
• 즉, polymorphism이 적용되지 않기 때문에 static dispatch로 동작한다.
• 하지만, 버그 추적을 어렵게 한다.
docs.swift.org
Why you should avoid using default implementation Medium
45.
ⓒ NAVER ConnectFoundation 49
4.2 더 생각해 보기 – POP를 구현할 때 주의해야 할 점 2
YAGNI
You Ain’t Gonna Neet It
46.
ⓒ NAVER ConnectFoundation 50
4.2 더 생각해 보기 – POP를 구현할 때 주의해야 할 점 2
Understanding Swift Performance -WWDC 16
47.
ⓒ NAVER ConnectFoundation 51
4.2 더 생각해 보기 – POP를 구현할 때 주의해야 할 점 2
# YAGNI, Over-Engineering
하지만
항상 마음속에 새기되,
학습을 위해서는...