kkbox wwdc17 swift and foundation - liyao

109
WWDC17 讀書會 Swift & Foundation Liyao Chen 1 現在 2017.6.30

Upload: liyao-chen

Post on 22-Jan-2018

2.085 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: KKBOX WWDC17 Swift and Foundation - Liyao

WWDC17 讀書會Swift & Foundation

Liyao Chen1現在 2017.6.30

Page 2: KKBOX WWDC17 Swift and Foundation - Liyao

Swift & Foundation• What’s New in Swift

• What’s New in Foundation

• Efficient Interactions with Frameworks

• Modernizing Grand Central Dispatch Usage

2

Page 3: KKBOX WWDC17 Swift and Foundation - Liyao

Outlines

• 無痛升級

• New APIs

• Performance

3

Page 4: KKBOX WWDC17 Swift and Foundation - Liyao

無痛升級

4

Page 5: KKBOX WWDC17 Swift and Foundation - Liyao

無痛升級

• Swift Refactoring Support

• New Build System

• Copy on Write

• Exclusive Access to Memory

5

Page 6: KKBOX WWDC17 Swift and Foundation - Liyao

New Build System

6

Page 7: KKBOX WWDC17 Swift and Foundation - Liyao

New Build System

7

Page 8: KKBOX WWDC17 Swift and Foundation - Liyao

• Shard Build for Coverage Testing

• Indexing While Building

• Faster Generic Code

• Heap alloc -> Stack alloc

New Build System

8

Page 9: KKBOX WWDC17 Swift and Foundation - Liyao

Copy on Write

9

Page 10: KKBOX WWDC17 Swift and Foundation - Liyao

• Make it easier to reason about local variables

• Enable better programmer optimization

• Enable better compiler optimization

• Enable powerful new language features

Exclusive Access to Memory

10

Page 11: KKBOX WWDC17 Swift and Foundation - Liyao

Exclusive Access to Memory

11

Page 12: KKBOX WWDC17 Swift and Foundation - Liyao

Exclusive Access to Memory

12

Page 13: KKBOX WWDC17 Swift and Foundation - Liyao

13

Page 14: KKBOX WWDC17 Swift and Foundation - Liyao

14

Page 15: KKBOX WWDC17 Swift and Foundation - Liyao

15

Page 16: KKBOX WWDC17 Swift and Foundation - Liyao

New APIs

16

Page 17: KKBOX WWDC17 Swift and Foundation - Liyao

New APIs• Private function access control changed

• Class and Subtype Existential

• KeyPaths and KVO

• Encoding & Decoding

• Generics

• String

17

Page 18: KKBOX WWDC17 Swift and Foundation - Liyao

18

Page 19: KKBOX WWDC17 Swift and Foundation - Liyao

19

Page 20: KKBOX WWDC17 Swift and Foundation - Liyao

Key Paths and KVO

20

Page 21: KKBOX WWDC17 Swift and Foundation - Liyao

21

Page 22: KKBOX WWDC17 Swift and Foundation - Liyao

22

Page 23: KKBOX WWDC17 Swift and Foundation - Liyao

23

Page 24: KKBOX WWDC17 Swift and Foundation - Liyao

24

Page 25: KKBOX WWDC17 Swift and Foundation - Liyao

25

Page 26: KKBOX WWDC17 Swift and Foundation - Liyao

26

Page 27: KKBOX WWDC17 Swift and Foundation - Liyao

27

Page 28: KKBOX WWDC17 Swift and Foundation - Liyao

28

Page 29: KKBOX WWDC17 Swift and Foundation - Liyao

29

Page 30: KKBOX WWDC17 Swift and Foundation - Liyao

Encoding and Decoding

30

Page 31: KKBOX WWDC17 Swift and Foundation - Liyao

31

Page 32: KKBOX WWDC17 Swift and Foundation - Liyao

32

Page 33: KKBOX WWDC17 Swift and Foundation - Liyao

33

Page 34: KKBOX WWDC17 Swift and Foundation - Liyao

34

Page 35: KKBOX WWDC17 Swift and Foundation - Liyao

–Mantle, SwiftyJSON

35

Page 36: KKBOX WWDC17 Swift and Foundation - Liyao

36

Page 37: KKBOX WWDC17 Swift and Foundation - Liyao

String

37

Page 38: KKBOX WWDC17 Swift and Foundation - Liyao

38

Page 39: KKBOX WWDC17 Swift and Foundation - Liyao

39

Page 40: KKBOX WWDC17 Swift and Foundation - Liyao

40

Page 41: KKBOX WWDC17 Swift and Foundation - Liyao

41

Page 42: KKBOX WWDC17 Swift and Foundation - Liyao

42

Page 43: KKBOX WWDC17 Swift and Foundation - Liyao

43

Page 44: KKBOX WWDC17 Swift and Foundation - Liyao

44

Page 45: KKBOX WWDC17 Swift and Foundation - Liyao

Performance

45

Page 46: KKBOX WWDC17 Swift and Foundation - Liyao

Performance

• Memory

• Smaller Binaries

• CPU

46

Page 47: KKBOX WWDC17 Swift and Foundation - Liyao

Memory

47

Page 48: KKBOX WWDC17 Swift and Foundation - Liyao

48

Page 49: KKBOX WWDC17 Swift and Foundation - Liyao

49

Page 50: KKBOX WWDC17 Swift and Foundation - Liyao

50

Page 51: KKBOX WWDC17 Swift and Foundation - Liyao

51

Page 52: KKBOX WWDC17 Swift and Foundation - Liyao

52

Page 53: KKBOX WWDC17 Swift and Foundation - Liyao

53

Page 54: KKBOX WWDC17 Swift and Foundation - Liyao

54

Page 55: KKBOX WWDC17 Swift and Foundation - Liyao

55

Page 56: KKBOX WWDC17 Swift and Foundation - Liyao

56

Page 57: KKBOX WWDC17 Swift and Foundation - Liyao

57

Page 58: KKBOX WWDC17 Swift and Foundation - Liyao

Text layout and rendering

58

Page 59: KKBOX WWDC17 Swift and Foundation - Liyao

Text layout and rendering

59

Page 60: KKBOX WWDC17 Swift and Foundation - Liyao

Text layout and rendering

60

Page 61: KKBOX WWDC17 Swift and Foundation - Liyao

Text layout and rendering

61

Page 62: KKBOX WWDC17 Swift and Foundation - Liyao

Smaller Binaries

62

Page 63: KKBOX WWDC17 Swift and Foundation - Liyao

63

Page 64: KKBOX WWDC17 Swift and Foundation - Liyao

64

Page 65: KKBOX WWDC17 Swift and Foundation - Liyao

65

Page 66: KKBOX WWDC17 Swift and Foundation - Liyao

CPU

66

Page 67: KKBOX WWDC17 Swift and Foundation - Liyao

GCD

• Parallelism

• Concurrency

• Context switching

67

Page 68: KKBOX WWDC17 Swift and Foundation - Liyao

68

Page 69: KKBOX WWDC17 Swift and Foundation - Liyao

69

Page 70: KKBOX WWDC17 Swift and Foundation - Liyao

70

Page 71: KKBOX WWDC17 Swift and Foundation - Liyao

71

Page 72: KKBOX WWDC17 Swift and Foundation - Liyao

72

Page 73: KKBOX WWDC17 Swift and Foundation - Liyao

73

Page 74: KKBOX WWDC17 Swift and Foundation - Liyao

74

Page 75: KKBOX WWDC17 Swift and Foundation - Liyao

75

Page 76: KKBOX WWDC17 Swift and Foundation - Liyao

76

Page 77: KKBOX WWDC17 Swift and Foundation - Liyao

77

Page 78: KKBOX WWDC17 Swift and Foundation - Liyao

78

Page 79: KKBOX WWDC17 Swift and Foundation - Liyao

79

Page 80: KKBOX WWDC17 Swift and Foundation - Liyao

80

Page 81: KKBOX WWDC17 Swift and Foundation - Liyao

81

Page 82: KKBOX WWDC17 Swift and Foundation - Liyao

82

Page 83: KKBOX WWDC17 Swift and Foundation - Liyao

83

Page 84: KKBOX WWDC17 Swift and Foundation - Liyao

84

Page 85: KKBOX WWDC17 Swift and Foundation - Liyao

85

Page 86: KKBOX WWDC17 Swift and Foundation - Liyao

What Are Dispatch Sources

• In short, a dispatch source is an object which monitors for some type of event.

• When the event occurs, it automatically schedules a block for execution on a dispatch queue.

• https://www.mikeash.com/pyblog/friday-qa-2009-09-11-intro-to-grand-central-dispatch-part-iii-dispatch-sources.html

86

Page 87: KKBOX WWDC17 Swift and Foundation - Liyao

What Are Dispatch Sources

87

Page 88: KKBOX WWDC17 Swift and Foundation - Liyao

Custom event

88

Page 89: KKBOX WWDC17 Swift and Foundation - Liyao

89

Page 90: KKBOX WWDC17 Swift and Foundation - Liyao

90

Page 91: KKBOX WWDC17 Swift and Foundation - Liyao

91

Page 92: KKBOX WWDC17 Swift and Foundation - Liyao

92

Page 93: KKBOX WWDC17 Swift and Foundation - Liyao

93

Page 94: KKBOX WWDC17 Swift and Foundation - Liyao

94

Page 95: KKBOX WWDC17 Swift and Foundation - Liyao

95

Page 96: KKBOX WWDC17 Swift and Foundation - Liyao

96

Page 97: KKBOX WWDC17 Swift and Foundation - Liyao

97

Page 98: KKBOX WWDC17 Swift and Foundation - Liyao

98

Page 99: KKBOX WWDC17 Swift and Foundation - Liyao

99

Page 100: KKBOX WWDC17 Swift and Foundation - Liyao

100

Page 101: KKBOX WWDC17 Swift and Foundation - Liyao

101

Page 102: KKBOX WWDC17 Swift and Foundation - Liyao

102

Page 103: KKBOX WWDC17 Swift and Foundation - Liyao

103

Page 104: KKBOX WWDC17 Swift and Foundation - Liyao

104

Page 105: KKBOX WWDC17 Swift and Foundation - Liyao

105

Page 106: KKBOX WWDC17 Swift and Foundation - Liyao

106

Page 107: KKBOX WWDC17 Swift and Foundation - Liyao

107

Page 108: KKBOX WWDC17 Swift and Foundation - Liyao

Recap

• 無痛升級

• New APIs

• Performance

• Binary size, memory, CPU

108

Page 109: KKBOX WWDC17 Swift and Foundation - Liyao

Q and A

109

Liyao Chen現在

Swift & Foundation2017.6.30