Thinking in Swift

Martin Mitrevski
Martin MitrevskiTechnical Coordinator at Netcetera
Thinking in Swift
Classes
Problems with classes
• Implicit sharing
• Class inheritance is too intrusive
• Lost type relationships
Protocol Oriented
Programming
https://developer.apple.com/videos/play/wwdc2015/408/
Protocol Oriented
Programming
• Protocols are more flexible
• Structs are lightweight
• Protocol extensions
• Retroactive modelling
MVC
Model - View - View Model
Functional Reactive
Programming
Streams
Transformations
Bindings
RXSwift
• Observable
• Variable
• Driver
• bindTo
Objective-C libraries
Networking library
• Based on NSURLConnection
• No dependency on Objective-C
• Not complex requirements
• To try something new
Networking
Start with a protocol
protocol HTTP {
func executeRequest(request: Request) -> Result<Response,
NSError>
}
Demo
• Table views
• Protocols
• HTTP client
Finishing thoughts
• More expressive
• Less bugs
• Better testing
• Different
• Fun
var questions?
https://martinmitrevski.com
1 of 15

Recommended

ESB integration for node.js by
ESB integration for node.js ESB integration for node.js
ESB integration for node.js SÎNICĂ Alboaie
4.8K views24 slides
Advance java session 2 by
Advance java session 2Advance java session 2
Advance java session 2Smita B Kumar
250 views13 slides
JEE session 1 by
JEE session 1JEE session 1
JEE session 1Smita B Kumar
192 views16 slides
SOA with PHP and Symfony by
SOA with PHP and SymfonySOA with PHP and Symfony
SOA with PHP and SymfonyMichalSchroeder
3.1K views23 slides
Bccon use notes objects in memory and other useful by
Bccon   use notes objects in memory and other usefulBccon   use notes objects in memory and other useful
Bccon use notes objects in memory and other usefulFrank van der Linden
468 views37 slides
Continuous delivery by sergey seletsky by
Continuous delivery by sergey seletskyContinuous delivery by sergey seletsky
Continuous delivery by sergey seletskySergey Seletsky
1K views25 slides

More Related Content

What's hot

Ruby on rails by
Ruby on railsRuby on rails
Ruby on railsBatzorigt Rentsen
112 views16 slides
Swarms: introduction by
Swarms: introductionSwarms: introduction
Swarms: introductionSÎNICĂ Alboaie
2.3K views17 slides
Use notes objects in memory and other useful java tips for xpages development by
Use notes objects in memory and other useful java tips for xpages developmentUse notes objects in memory and other useful java tips for xpages development
Use notes objects in memory and other useful java tips for xpages developmentFrank van der Linden
2.6K views33 slides
Who needs containers in a serverless world by
Who needs containers in a serverless worldWho needs containers in a serverless world
Who needs containers in a serverless worldMatthias Luebken
263 views36 slides
Uklug2012 yellow and blue stream by
Uklug2012 yellow and blue streamUklug2012 yellow and blue stream
Uklug2012 yellow and blue streamFrank van der Linden
780 views37 slides
Net developer days presentation by
Net developer days   presentationNet developer days   presentation
Net developer days presentationAlexandre Malavasi
182 views39 slides

What's hot(20)

Use notes objects in memory and other useful java tips for xpages development by Frank van der Linden
Use notes objects in memory and other useful java tips for xpages developmentUse notes objects in memory and other useful java tips for xpages development
Use notes objects in memory and other useful java tips for xpages development
Who needs containers in a serverless world by Matthias Luebken
Who needs containers in a serverless worldWho needs containers in a serverless world
Who needs containers in a serverless world
Matthias Luebken263 views
Asynchronous Microservices in nodejs by Bruno Pedro
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejs
Bruno Pedro8.3K views
4. introduction to Asp.Net MVC - Part II by Rohit Rao
4. introduction to Asp.Net MVC - Part II4. introduction to Asp.Net MVC - Part II
4. introduction to Asp.Net MVC - Part II
Rohit Rao284 views
Mule ESB Intro by Noga Manela
Mule ESB IntroMule ESB Intro
Mule ESB Intro
Noga Manela1.2K views
Transforming monolith systems to microservices by Alon Yair
Transforming monolith systems to microservicesTransforming monolith systems to microservices
Transforming monolith systems to microservices
Alon Yair10 views
Debugging Microservices - key challenges and techniques - Microservices Odesa... by Lohika_Odessa_TechTalks
Debugging Microservices - key challenges and techniques - Microservices Odesa...Debugging Microservices - key challenges and techniques - Microservices Odesa...
Debugging Microservices - key challenges and techniques - Microservices Odesa...
'How to build your first micro frontend in a matter of minutes' by Vladlen Fe... by OdessaJS Conf
'How to build your first micro frontend in a matter of minutes' by Vladlen Fe...'How to build your first micro frontend in a matter of minutes' by Vladlen Fe...
'How to build your first micro frontend in a matter of minutes' by Vladlen Fe...
OdessaJS Conf133 views
Infinum Android Talks #09 - DBFlow ORM by Infinum
Infinum Android Talks #09 - DBFlow ORMInfinum Android Talks #09 - DBFlow ORM
Infinum Android Talks #09 - DBFlow ORM
Infinum3.4K views
What’s New In Cincom Smalltalk by ESUG
What’s New In Cincom SmalltalkWhat’s New In Cincom Smalltalk
What’s New In Cincom Smalltalk
ESUG597 views
Knockout by hamman359
KnockoutKnockout
Knockout
hamman359196 views

Similar to Thinking in Swift

Introduction to ASP.NET 5 by
Introduction to ASP.NET 5Introduction to ASP.NET 5
Introduction to ASP.NET 5mbaric
2.4K views22 slides
ASP.NET vNext by
ASP.NET vNextASP.NET vNext
ASP.NET vNextAlex Thissen
273 views36 slides
Service-Oriented Design and Implement with Rails3 by
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Wen-Tien Chang
4.5K views83 slides
Untangling - fall2017 - week 8 by
Untangling - fall2017 - week 8Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Derek Jacoby
163 views22 slides
Ruby on rails by
Ruby on railsRuby on rails
Ruby on railsBatzorigt Rentsen
89 views15 slides
Lecture 11: ML Deployment & Monitoring (Full Stack Deep Learning - Spring 2021) by
Lecture 11: ML Deployment & Monitoring (Full Stack Deep Learning - Spring 2021)Lecture 11: ML Deployment & Monitoring (Full Stack Deep Learning - Spring 2021)
Lecture 11: ML Deployment & Monitoring (Full Stack Deep Learning - Spring 2021)Sergey Karayev
29K views137 slides

Similar to Thinking in Swift(20)

Introduction to ASP.NET 5 by mbaric
Introduction to ASP.NET 5Introduction to ASP.NET 5
Introduction to ASP.NET 5
mbaric2.4K views
Service-Oriented Design and Implement with Rails3 by Wen-Tien Chang
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3
Wen-Tien Chang4.5K views
Untangling - fall2017 - week 8 by Derek Jacoby
Untangling - fall2017 - week 8Untangling - fall2017 - week 8
Untangling - fall2017 - week 8
Derek Jacoby163 views
Lecture 11: ML Deployment & Monitoring (Full Stack Deep Learning - Spring 2021) by Sergey Karayev
Lecture 11: ML Deployment & Monitoring (Full Stack Deep Learning - Spring 2021)Lecture 11: ML Deployment & Monitoring (Full Stack Deep Learning - Spring 2021)
Lecture 11: ML Deployment & Monitoring (Full Stack Deep Learning - Spring 2021)
Sergey Karayev29K views
Innovating faster with SBT, Continuous Delivery, and LXC by kscaldef
Innovating faster with SBT, Continuous Delivery, and LXCInnovating faster with SBT, Continuous Delivery, and LXC
Innovating faster with SBT, Continuous Delivery, and LXC
kscaldef10K views
Building Efficient Parallel Testing Platforms with Docker by Laura Frank Tacho
Building Efficient Parallel Testing Platforms with DockerBuilding Efficient Parallel Testing Platforms with Docker
Building Efficient Parallel Testing Platforms with Docker
Migration from ASP.NET MVC to ASP.NET Core by Miroslav Popovic
Migration from ASP.NET MVC to ASP.NET CoreMigration from ASP.NET MVC to ASP.NET Core
Migration from ASP.NET MVC to ASP.NET Core
Miroslav Popovic356 views
Eloquent workflow: delivering data from database to client in a right way by Роман Кинякин
Eloquent workflow: delivering data from database to client in a right wayEloquent workflow: delivering data from database to client in a right way
Eloquent workflow: delivering data from database to client in a right way
Max Yekaterynenko - Magento Architecture, Next Steps by Meet Magento Italy
Max Yekaterynenko - Magento Architecture, Next StepsMax Yekaterynenko - Magento Architecture, Next Steps
Max Yekaterynenko - Magento Architecture, Next Steps
Meet Magento Italy421 views
FlowN vs FlowVisor: Scalable Network Virtualization in SDN by Hao Jiang
FlowN vs FlowVisor: Scalable Network Virtualization in SDNFlowN vs FlowVisor: Scalable Network Virtualization in SDN
FlowN vs FlowVisor: Scalable Network Virtualization in SDN
Hao Jiang1.2K views
Unit Testing Asp.net and Asp.net MVC by Gil Zilberfeld
Unit Testing Asp.net and Asp.net MVCUnit Testing Asp.net and Asp.net MVC
Unit Testing Asp.net and Asp.net MVC
Gil Zilberfeld817 views
Building Micro-Services with Scala by Yardena Meymann
Building Micro-Services with ScalaBuilding Micro-Services with Scala
Building Micro-Services with Scala
Yardena Meymann16K views
ASP.NET Core Demos Part 2 by Erik Noren
ASP.NET Core Demos Part 2ASP.NET Core Demos Part 2
ASP.NET Core Demos Part 2
Erik Noren400 views

More from Martin Mitrevski

Understanding language on iOS by
Understanding language on iOSUnderstanding language on iOS
Understanding language on iOSMartin Mitrevski
60 views20 slides
Building voice responsive apps on iOS by
Building voice responsive apps on iOSBuilding voice responsive apps on iOS
Building voice responsive apps on iOSMartin Mitrevski
53 views25 slides
Developing Conversational Interfaces for iOS by
Developing Conversational Interfaces for iOSDeveloping Conversational Interfaces for iOS
Developing Conversational Interfaces for iOSMartin Mitrevski
70 views33 slides
Conversational Interfaces @ Netcetera by
Conversational Interfaces @ NetceteraConversational Interfaces @ Netcetera
Conversational Interfaces @ NetceteraMartin Mitrevski
44 views11 slides
New iOS Technologies by
New iOS TechnologiesNew iOS Technologies
New iOS TechnologiesMartin Mitrevski
88 views33 slides
Conversational Interfaces and Machine Learning by
Conversational Interfaces and Machine LearningConversational Interfaces and Machine Learning
Conversational Interfaces and Machine LearningMartin Mitrevski
122 views12 slides

More from Martin Mitrevski(9)

Recently uploaded

Winter '24 Release Chat.pdf by
Winter '24 Release Chat.pdfWinter '24 Release Chat.pdf
Winter '24 Release Chat.pdfmelbourneauuser
9 views20 slides
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan... by
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...Deltares
11 views30 slides
DevsRank by
DevsRankDevsRank
DevsRankdevsrank786
11 views1 slide
Software evolution understanding: Automatic extraction of software identifier... by
Software evolution understanding: Automatic extraction of software identifier...Software evolution understanding: Automatic extraction of software identifier...
Software evolution understanding: Automatic extraction of software identifier...Ra'Fat Al-Msie'deen
7 views33 slides
What Can Employee Monitoring Software Do?​ by
What Can Employee Monitoring Software Do?​What Can Employee Monitoring Software Do?​
What Can Employee Monitoring Software Do?​wAnywhere
21 views11 slides
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)... by
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...Deltares
9 views34 slides

Recently uploaded(20)

DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan... by Deltares
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
Deltares11 views
Software evolution understanding: Automatic extraction of software identifier... by Ra'Fat Al-Msie'deen
Software evolution understanding: Automatic extraction of software identifier...Software evolution understanding: Automatic extraction of software identifier...
Software evolution understanding: Automatic extraction of software identifier...
What Can Employee Monitoring Software Do?​ by wAnywhere
What Can Employee Monitoring Software Do?​What Can Employee Monitoring Software Do?​
What Can Employee Monitoring Software Do?​
wAnywhere21 views
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)... by Deltares
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...
Deltares9 views
SUGCON ANZ Presentation V2.1 Final.pptx by Jack Spektor
SUGCON ANZ Presentation V2.1 Final.pptxSUGCON ANZ Presentation V2.1 Final.pptx
SUGCON ANZ Presentation V2.1 Final.pptx
Jack Spektor22 views
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ... by Deltares
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
Deltares9 views
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM... by Deltares
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...
Deltares7 views
Neo4j y GenAI by Neo4j
Neo4j y GenAI Neo4j y GenAI
Neo4j y GenAI
Neo4j42 views
El Arte de lo Possible by Neo4j
El Arte de lo PossibleEl Arte de lo Possible
El Arte de lo Possible
Neo4j38 views
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx by animuscrm
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
animuscrm13 views
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko... by Deltares
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
Deltares11 views
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t... by Deltares
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
Deltares9 views
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra... by Marc Müller
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra....NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
Marc Müller38 views
DSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - Prida by Deltares
DSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - PridaDSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - Prida
DSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - Prida
Deltares18 views
Tridens DevOps by Tridens
Tridens DevOpsTridens DevOps
Tridens DevOps
Tridens9 views
Copilot Prompting Toolkit_All Resources.pdf by Riccardo Zamana
Copilot Prompting Toolkit_All Resources.pdfCopilot Prompting Toolkit_All Resources.pdf
Copilot Prompting Toolkit_All Resources.pdf
Riccardo Zamana6 views

Thinking in Swift