+ All Categories
Transcript
Page 1: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
Page 2: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

TOMÁŠ KOHOUTiOS Developer, Ackee

Page 3: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Speeding up iOS development using Swift Playground

Page 4: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Swift is great but …

Page 5: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Migrations

the ABI is not stable

migrate with every version of

swift

large projects = days to weeks

for migration (2.3 to 3)

hopefully less breaking changes in future

Page 6: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Xcode

code completion sucks

refactoring non-existent

no plugins anymore

crashes

we can use emoticons in code

Page 7: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Build times

small application = 2 - 5 mins

large application (>2000 files) =

40 mins

incremental builds does not

always work

Page 8: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Feedback loop

1. Denial

2. Anger

3. Bargaining

4. Depression

5. Acceptance

RealityIdeal

1. Write code

2. Build

3. See result

Page 9: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Build times

Build time: 68 s

Build time: 27 s

Page 10: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Build time analyzerhttps://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode

Page 11: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Code Injection

inject code in runtime

no need to rebuild the application

hard to setup

xcode plugin

https://github.com/johnno1962/injectionforxcode

Page 12: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Code Injection II

separate application

since iOS 10 - simulator only

easier to setup

still unreliable

http://johnholdsworth.com/injection.html

Page 13: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Swift playgrounds

test sample code

educational tool

prototype animations

Page 14: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Playground live view

Page 15: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Playground live view

since xcode 7.3

interactive

can display viewcontroller

Page 16: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Swift playgrounds

Page 17: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Swift playgrounds

isolate screens in playground pages

prototype much faster

mock state easily

Page 18: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Demohttps://github.com/AckeeCZ/ios-playgrounds-example

Page 19: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Kickstarter application

open sourced iOS application

26 playground pages

large code base

playgrounds starts in 10 - 20s

https://github.com/kickstarter/ios-oss

Page 20: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

TDD

1. add a test

2. run the test to see it fail

3. make change to pass the test

4. run the test again until it passes

5. repeat

Page 21: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

TDD in playground

you can also run tests in playground!

quick feedback

test in isolation

copy to your suite later

Page 22: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Demohttps://github.com/sshrpe/TDDSwiftPlayground

Page 23: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Limitations

only latest swift

debugging

no image literals

xcode support

Page 24: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Xcode support

Xcode 7.3 💜

Xcode 8.0 - 8.2.1 🔥

Xcode 8.3 💜

Xcode 9 ❔

Page 25: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

Summary

long build times are bad

be aware of the compiler

code injection

isolate screens in playground pages

Page 26: Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů

WWW.MDEVTALK.CZ

mdevtalk


Top Related