Slide 1

Slide 1 text

macOS app development for iOS devs: expand your horizons

Slide 2

Slide 2 text

Julia Vashchenko macOS Engineer at • Languages: Objective-C, Swift, C++ • Platforms: macOS, iOS • Technologies: inter-process communication, daemons & agents, multithreading, GUI apps iaronskaya

Slide 3

Slide 3 text

Why macOS? Benefits of coding for macOS for iOS developers

Slide 4

Slide 4 text

iOSMac

Slide 5

Slide 5 text

iOSMac See also: https://speakerdeck.com/steipete/hacking-marzipan

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

iOSMac

Slide 11

Slide 11 text

https://developer.apple.com/macos/

Slide 12

Slide 12 text

Many great apps can be written for macOS!

Slide 13

Slide 13 text

Does anyone write for macOS?

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Seamless transition 1. Familiar IDE: Xcode 2. Same language stack: Swift, Objective-C, C++, C 3. Well-known frameworks 4. More possibilities

Slide 16

Slide 16 text

Seamless transition 1. Familiar IDE: Xcode 2. Same language stack: Swift, Objective-C, C++, C 3. Well-known frameworks 4. More possibilities

Slide 17

Slide 17 text

iOS & macOS: alike and different

Slide 18

Slide 18 text

UIKit vs AppKit

Slide 19

Slide 19 text

UIApplication

Slide 20

Slide 20 text

UIApplication NSApplication

Slide 21

Slide 21 text

UIView

Slide 22

Slide 22 text

UIView NSView

Slide 23

Slide 23 text

UITableView

Slide 24

Slide 24 text

UITableView NSTableView

Slide 25

Slide 25 text

100 days of OSX Development video tutorials

Slide 26

Slide 26 text

100 days of OSX Development video tutorials

Slide 27

Slide 27 text

100 days of OSX Development video tutorials

Slide 28

Slide 28 text

UIWindow

Slide 29

Slide 29 text

UIWindow NSWindow

Slide 30

Slide 30 text

UIWindow NSWindow ↑ UIResponder ↑ NSObject UIView ↑

Slide 31

Slide 31 text

UIWindow NSWindow ↑ UIResponder ↑ NSObject UIView ↑ ↑ NSResponder ↑ NSObject

Slide 32

Slide 32 text

UITableView NSTableView UIScrollView UIView UIResponder ↑ ↑ ↑

Slide 33

Slide 33 text

UITableView NSTableView UIScrollView UIView UIResponder ↑ ↑ ↑ NSControl NSView NSResponder ↑ ↑ ↑

Slide 34

Slide 34 text

NSControl

Slide 35

Slide 35 text

NSControl

Slide 36

Slide 36 text

NSControl

Slide 37

Slide 37 text

NSCollectionView

Slide 38

Slide 38 text

NSCollectionView Works a lot differently than UICollectionView

Slide 39

Slide 39 text

CALayer of the view: find 3 differences

Slide 40

Slide 40 text

CALayer of the view: find 3 differences

Slide 41

Slide 41 text

CALayer of the view: find 3 differences

Slide 42

Slide 42 text

CALayer of the view: find 3 differences

Slide 43

Slide 43 text

Core Animation

Slide 44

Slide 44 text

Core Animation

Slide 45

Slide 45 text

Core Animation

Slide 46

Slide 46 text

Core Animation

Slide 47

Slide 47 text

Coordinate system

Slide 48

Slide 48 text

Coordinate system

Slide 49

Slide 49 text

Coordinate system

Slide 50

Slide 50 text

Coordinate system myView.isFlipped = true

Slide 51

Slide 51 text

Why so many differences?

Slide 52

Slide 52 text

iOS & macOS history

Slide 53

Slide 53 text

OS X

Slide 54

Slide 54 text

OS X [ɔes ten]

Slide 55

Slide 55 text

1984 1985 1986 1987 System 1 System 2 System 3 System 4 System 5: Macintosh System Software

Slide 56

Slide 56 text

1988 1989 1990 1991 System 6 System 7

Slide 57

Slide 57 text

1992 1993 1994 1995 Mac OS 7.5.1 Mac OS 8

Slide 58

Slide 58 text

1996 1997 1998 1999 Apple acquires NeXT Mac OS 9

Slide 59

Slide 59 text

2000 2001 2002 2003 Mac OS X 10.0 Cheetah, 10.1 Puma Mac OS X 10.2 Jaguar Mac OS X 10.3 Panther

Slide 60

Slide 60 text

2004 2005 2006 2007 Mac OS X 10.4 Tiger Mac OS X 10.5 Leopard iPhone 1 launch

Slide 61

Slide 61 text

2008 2009 2010 2011 Mac OS X 10.6 Snow Leopard Mac OS X 10.7 Lion

Slide 62

Slide 62 text

2012 2013 2014 2015 Mac OS X 10.8 Mountain Lion Mac OS X 10.9 Maverics Mac OS X 10.10 Yosemite Mac OS X 10.11 El Capitan

Slide 63

Slide 63 text

2016 2017 2018 2019 macOS 10.12 Sierra macOS 10.13 High Sierra macOS 10.14 Mojave ?

Slide 64

Slide 64 text

System 1

Slide 65

Slide 65 text

System 6

Slide 66

Slide 66 text

System 6

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

System 7

Slide 71

Slide 71 text

Mac OS 9

Slide 72

Slide 72 text

Mac OS 9

Slide 73

Slide 73 text

Mac OS X

Slide 74

Slide 74 text

Mac OS X 10.5

Slide 75

Slide 75 text

macOS specifics

Slide 76

Slide 76 text

macOS specifics Distribution out of App Store

Slide 77

Slide 77 text

macOS specifics Distribution out of App Store Living out of the Sandbox

Slide 78

Slide 78 text

macOS specifics Distribution out of App Store Living out of the Sandbox Obtaining root privileges

Slide 79

Slide 79 text

macOS specifics Distribution out of App Store Living out of the Sandbox Obtaining root privileges Using command-line tools

Slide 80

Slide 80 text

macOS specifics Distribution out of App Store Living out of the Sandbox Obtaining root privileges Using command-line tools Scripting other apps

Slide 81

Slide 81 text

macOS specifics Distribution out of App Store Living out of the Sandbox Obtaining root privileges Using command-line tools Scripting other apps ...

Slide 82

Slide 82 text

Demo

Slide 83

Slide 83 text

PDP: Personal Development Plan https://gist.github.com/aronskaya/7daa8d2bf77d60c65d35f91c6316e8f0

Slide 84

Slide 84 text

Any Questions?

Slide 85

Slide 85 text

Thank you! email: [email protected] twitter: iaronskaya