SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
Do not reinvent
the wheel
Make use of Cocoa libraries
and ready components
Mateusz Klimczak
Agenda
! Overview of the most popular Cocoa
libraries and ready components
! When to use ready components?
! CocoaPods – an easy way to organise
your components
! Let’s create our own Pod
! Use Gemfile to control the CocoaPods
version
! Discussion
! Probably the most popular iOS library
! Main features:
! Encapsulates the common patterns of
communicating with a web application over
HTPP: GET, POST, PUT, DELETE, etc.
! Easy request serialisation
! Since 2.0 version support for caching
downloaded images (both in-memory and disk
caching)
! Network reachability manager
ReactiveCocoa
! Objective-C framework inspired by
Functional Reactive Programming
! Provides APIs for composing and
transforming streams of values
! Instead of using mutable variables RAC
provides signals that capture present and
future values
! Widely discussed on last meeting
RAC – usage example
! Amazing tool for crash reporting with
support for both iOS and Android
! Provides detailed statistics about crashes
! Recently integrated into Twitter’s Fabric.IO
– mobile platform for mobile analytics,
app distribution and reporting
! Allows integration with Trello&BitBucket
! Live example!
CocoaLumberjack
! Logging framework for Mac and iOS
! Faster than NSLog
! Main features:
! Send logs over the network
! Use multiple loggers to log simultaneously to
many places (file, console, database)
! Define different log levels per logger

(e.g. log verbose to console, but briefly to
log server)
MagicalRecord
! Inspired by RoR Active Record Fetching
! Active Record is an approach to accessing
data in database
! Database table is wrapped into a class
! Object instance is tied to a single row in the
database table
! The wrapper class implements properties for
each column in the table
! Allows clear, simple, one-line fetches from
CoreData
FXKeychain
! Lightweight wrapper around the Apple
keychain API
! Exposes the commonly used functionality
while hiding complexity of underlying APIs
RHAddressBook
! Library for interfacing with the iOS
AddressBook
! All contact attributes on various objects
(Person, Group) are exposed as properties
– no more dealing with CF methods
TPKeyboardAvoiding
! Universal solution for moving text fields out
of the keyboard in iOS
! Uses UIScrollView/UITableView subclasses
that handles everything for you
PaymentKit
! Library providing utility methods for dealing
with credit card payments:
! Credit card number validation&formatting
! Expiration validation
! Credit card type checking
! Credit card providers icons fetching
! Ready to use UI components for to input
card data
card.io
! Provides ready to use
credit card scanning
XMLDictionary
! Library for parsing and generating XMLs
! Allows parsing XML received from server to
NSDictionary and vice versa
TSMessages
! Provides an easy to use class to show little
notification views on the top of the screen
MSDynamicsDrawerViewController
! Container view controller
that manages the
presentation of a single
view controller overlaid
over drawer view
controllers
! Supports swipe to open
and close the drawer
MBProgressHUD
! Customisable, easy to use progress HUD
with an indicator while work is being done
in background thread
JSQMessagesViewController
! Messages UI library for iOS
! Allows displaying media, map location and more
And many, many more…
! Kiwi
! Specta
! Masonry
! PureLayout
! GPUImage
! JSONKit
! Facebook/Twitter/Google
! …
When to use ready
components?
! We want to save some time (it’s not
always worth it – to be continued)
! Library/component is still developed and
preferably have more than 1 contributor
! We don’t need a full control of the code
! We don’t need to provide a high-level
security
! If it is a UI component, we don’t have to
create highly customised interface
! Dependency manager for Swift and
Objective-C project
! According to the http://rubygems.org
currently there are over 1.1 million downloads
of CocoaPods (it doesn’t mean that there are
that many users)
! http://cocoapods.org sites are generating
180k visits per month
! You can try the demo project of the Pod
without integrating it into your project
! It’s easy to get started
! Installation:
! gem install cocoapods
! Create Podfile
! pod init
! Add pods references to your Podfile
! Run command:
! pod install
! Use .xcworkspace instead of .xcodeproj
! Life example – let’s create our own Pod!
! Instructions:
http://guides.cocoapods.org/making/
making-a-cocoapod.html
Gemfile
! Use Gemfile to keep the same version of
CocoaPods for everyone in team
! Gemfile should specify the required version
of CocoaPods
! Install pods using:
! bundle exec pod install
Discussion!
! What libraries do you most often use?
! When do you prefer to write your own
code?
! Your experiences!

Más contenido relacionado

La actualidad más candente

Building Hybrid Apps with AngularJS and Ionic
Building Hybrid Apps with AngularJS and IonicBuilding Hybrid Apps with AngularJS and Ionic
Building Hybrid Apps with AngularJS and IonicYounes Adounis
 
Microsoft Cognitive Services & Bot Framework - Universidade Fernando Pessoa
Microsoft Cognitive Services & Bot Framework - Universidade Fernando PessoaMicrosoft Cognitive Services & Bot Framework - Universidade Fernando Pessoa
Microsoft Cognitive Services & Bot Framework - Universidade Fernando PessoaRui Quintino
 
Building Native “apps” with Visual Studio 2015
Building Native “apps” with Visual Studio 2015Building Native “apps” with Visual Studio 2015
Building Native “apps” with Visual Studio 2015Mike Melusky
 
Microsoft Botframework and LUIS
Microsoft Botframework and LUISMicrosoft Botframework and LUIS
Microsoft Botframework and LUISIan Philpot
 
Introduction to dot net framework by vaishali sahare [katkar]
Introduction to dot net framework by vaishali sahare [katkar]Introduction to dot net framework by vaishali sahare [katkar]
Introduction to dot net framework by vaishali sahare [katkar]vaishalisahare123
 
Build a Great Conversationalist
Build a Great ConversationalistBuild a Great Conversationalist
Build a Great ConversationalistLorenzo Barbieri
 
4. RTFM, 나는프로그래머다 Meetup 2016 / 한국마이크로소프트 김명신 기술 에반젤리스트
4. RTFM, 나는프로그래머다 Meetup 2016 / 한국마이크로소프트 김명신 기술 에반젤리스트 4. RTFM, 나는프로그래머다 Meetup 2016 / 한국마이크로소프트 김명신 기술 에반젤리스트
4. RTFM, 나는프로그래머다 Meetup 2016 / 한국마이크로소프트 김명신 기술 에반젤리스트 양 한빛
 
Phonegap android
Phonegap androidPhonegap android
Phonegap androidumesh patil
 
Dev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar BhattiDev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar BhattiTaswar Bhatti
 
Azure Global Bootcamp 2017 - Microsoft Cognitive Services
Azure Global Bootcamp 2017 - Microsoft Cognitive ServicesAzure Global Bootcamp 2017 - Microsoft Cognitive Services
Azure Global Bootcamp 2017 - Microsoft Cognitive ServicesGeorge Spyrou
 
Cross Platform Development with Xamarin
Cross Platform Development with XamarinCross Platform Development with Xamarin
Cross Platform Development with Xamarinbryan costanich
 
Building hybrid apps with Xamarin, Ryan Paul
Building hybrid apps with Xamarin, Ryan PaulBuilding hybrid apps with Xamarin, Ryan Paul
Building hybrid apps with Xamarin, Ryan PaulXamarin
 
Introduction to .NET Framework and C# (English)
Introduction to .NET Framework and C# (English)Introduction to .NET Framework and C# (English)
Introduction to .NET Framework and C# (English)Vangos Pterneas
 

La actualidad más candente (13)

Building Hybrid Apps with AngularJS and Ionic
Building Hybrid Apps with AngularJS and IonicBuilding Hybrid Apps with AngularJS and Ionic
Building Hybrid Apps with AngularJS and Ionic
 
Microsoft Cognitive Services & Bot Framework - Universidade Fernando Pessoa
Microsoft Cognitive Services & Bot Framework - Universidade Fernando PessoaMicrosoft Cognitive Services & Bot Framework - Universidade Fernando Pessoa
Microsoft Cognitive Services & Bot Framework - Universidade Fernando Pessoa
 
Building Native “apps” with Visual Studio 2015
Building Native “apps” with Visual Studio 2015Building Native “apps” with Visual Studio 2015
Building Native “apps” with Visual Studio 2015
 
Microsoft Botframework and LUIS
Microsoft Botframework and LUISMicrosoft Botframework and LUIS
Microsoft Botframework and LUIS
 
Introduction to dot net framework by vaishali sahare [katkar]
Introduction to dot net framework by vaishali sahare [katkar]Introduction to dot net framework by vaishali sahare [katkar]
Introduction to dot net framework by vaishali sahare [katkar]
 
Build a Great Conversationalist
Build a Great ConversationalistBuild a Great Conversationalist
Build a Great Conversationalist
 
4. RTFM, 나는프로그래머다 Meetup 2016 / 한국마이크로소프트 김명신 기술 에반젤리스트
4. RTFM, 나는프로그래머다 Meetup 2016 / 한국마이크로소프트 김명신 기술 에반젤리스트 4. RTFM, 나는프로그래머다 Meetup 2016 / 한국마이크로소프트 김명신 기술 에반젤리스트
4. RTFM, 나는프로그래머다 Meetup 2016 / 한국마이크로소프트 김명신 기술 에반젤리스트
 
Phonegap android
Phonegap androidPhonegap android
Phonegap android
 
Dev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar BhattiDev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar Bhatti
 
Azure Global Bootcamp 2017 - Microsoft Cognitive Services
Azure Global Bootcamp 2017 - Microsoft Cognitive ServicesAzure Global Bootcamp 2017 - Microsoft Cognitive Services
Azure Global Bootcamp 2017 - Microsoft Cognitive Services
 
Cross Platform Development with Xamarin
Cross Platform Development with XamarinCross Platform Development with Xamarin
Cross Platform Development with Xamarin
 
Building hybrid apps with Xamarin, Ryan Paul
Building hybrid apps with Xamarin, Ryan PaulBuilding hybrid apps with Xamarin, Ryan Paul
Building hybrid apps with Xamarin, Ryan Paul
 
Introduction to .NET Framework and C# (English)
Introduction to .NET Framework and C# (English)Introduction to .NET Framework and C# (English)
Introduction to .NET Framework and C# (English)
 

Destacado

LinkedIn Infographic draft 11_1200
LinkedIn Infographic draft 11_1200LinkedIn Infographic draft 11_1200
LinkedIn Infographic draft 11_1200AMComms
 
The definitive-guide-to LinkedIn
The definitive-guide-to LinkedInThe definitive-guide-to LinkedIn
The definitive-guide-to LinkedInAMComms
 
Breve historia del piano.
Breve historia del piano.Breve historia del piano.
Breve historia del piano.jean9023p
 
LinkedIn company pagesplaybook6 11-13
LinkedIn company pagesplaybook6 11-13LinkedIn company pagesplaybook6 11-13
LinkedIn company pagesplaybook6 11-13AMComms
 
[Hack3City] Estimote Beacons development - get started
[Hack3City] Estimote Beacons development - get started[Hack3City] Estimote Beacons development - get started
[Hack3City] Estimote Beacons development - get startedMateusz Klimczak
 
Breve historia del piano.
Breve historia del piano.Breve historia del piano.
Breve historia del piano.jean9023p
 
[CocoaHeads Tricity] watchOS 2 - native apps are coming
[CocoaHeads Tricity] watchOS 2 - native apps are coming[CocoaHeads Tricity] watchOS 2 - native apps are coming
[CocoaHeads Tricity] watchOS 2 - native apps are comingMateusz Klimczak
 
[CocoaHeads Tricity] Estimote Beacons - world most popular iBeacon implementa...
[CocoaHeads Tricity] Estimote Beacons - world most popular iBeacon implementa...[CocoaHeads Tricity] Estimote Beacons - world most popular iBeacon implementa...
[CocoaHeads Tricity] Estimote Beacons - world most popular iBeacon implementa...Mateusz Klimczak
 

Destacado (16)

I can I will - Unnati Unlimited
I can I will - Unnati UnlimitedI can I will - Unnati Unlimited
I can I will - Unnati Unlimited
 
Unnati Unlimited
Unnati UnlimitedUnnati Unlimited
Unnati Unlimited
 
PREZI
PREZIPREZI
PREZI
 
Unnati unlimited - About Us
Unnati unlimited - About UsUnnati unlimited - About Us
Unnati unlimited - About Us
 
I can I will - Unnati Unlimited
I can I will - Unnati UnlimitedI can I will - Unnati Unlimited
I can I will - Unnati Unlimited
 
LinkedIn Infographic draft 11_1200
LinkedIn Infographic draft 11_1200LinkedIn Infographic draft 11_1200
LinkedIn Infographic draft 11_1200
 
The definitive-guide-to LinkedIn
The definitive-guide-to LinkedInThe definitive-guide-to LinkedIn
The definitive-guide-to LinkedIn
 
I can I will - Unnati Unlimited
I can I will - Unnati UnlimitedI can I will - Unnati Unlimited
I can I will - Unnati Unlimited
 
Breve historia del piano.
Breve historia del piano.Breve historia del piano.
Breve historia del piano.
 
LinkedIn company pagesplaybook6 11-13
LinkedIn company pagesplaybook6 11-13LinkedIn company pagesplaybook6 11-13
LinkedIn company pagesplaybook6 11-13
 
[Hack3City] Estimote Beacons development - get started
[Hack3City] Estimote Beacons development - get started[Hack3City] Estimote Beacons development - get started
[Hack3City] Estimote Beacons development - get started
 
Breve historia del piano.
Breve historia del piano.Breve historia del piano.
Breve historia del piano.
 
I can I will - Unnati Unlimited
I can I will - Unnati UnlimitedI can I will - Unnati Unlimited
I can I will - Unnati Unlimited
 
[CocoaHeads Tricity] watchOS 2 - native apps are coming
[CocoaHeads Tricity] watchOS 2 - native apps are coming[CocoaHeads Tricity] watchOS 2 - native apps are coming
[CocoaHeads Tricity] watchOS 2 - native apps are coming
 
FAQs on VRLA Gel batteries
FAQs on VRLA Gel batteriesFAQs on VRLA Gel batteries
FAQs on VRLA Gel batteries
 
[CocoaHeads Tricity] Estimote Beacons - world most popular iBeacon implementa...
[CocoaHeads Tricity] Estimote Beacons - world most popular iBeacon implementa...[CocoaHeads Tricity] Estimote Beacons - world most popular iBeacon implementa...
[CocoaHeads Tricity] Estimote Beacons - world most popular iBeacon implementa...
 

Similar a Do not reinvent the wheel with Cocoa libraries

iOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for JasakomeriOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for JasakomerAndri Yadi
 
Understanding iOS from an Android perspective
Understanding iOS from an Android perspectiveUnderstanding iOS from an Android perspective
Understanding iOS from an Android perspectiveLauren Yew
 
E4 Eclipse Super Force
E4 Eclipse Super ForceE4 Eclipse Super Force
E4 Eclipse Super ForceKaniska Mandal
 
Cross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual StudioCross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual StudioMizanur Sarker
 
Building Commercial Applications with Oracle Applications Express by Scott Sp...
Building Commercial Applications with Oracle Applications Express by Scott Sp...Building Commercial Applications with Oracle Applications Express by Scott Sp...
Building Commercial Applications with Oracle Applications Express by Scott Sp...Enkitec
 
DevOps Sydney- Building Better Containers with Habitat
DevOps Sydney- Building Better Containers with HabitatDevOps Sydney- Building Better Containers with Habitat
DevOps Sydney- Building Better Containers with HabitatMatt Ray
 
ID-ObjectiveConference 2012 - Introduction to iOS Development
ID-ObjectiveConference 2012 - Introduction to iOS DevelopmentID-ObjectiveConference 2012 - Introduction to iOS Development
ID-ObjectiveConference 2012 - Introduction to iOS DevelopmentAndri Yadi
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedsparkfabrik
 
Yii Framework - Do we really need another php framework?
Yii Framework - Do we really need another php framework?Yii Framework - Do we really need another php framework?
Yii Framework - Do we really need another php framework?Joachim Eckert
 
Adobe phonegap-workshop-2013
Adobe phonegap-workshop-2013Adobe phonegap-workshop-2013
Adobe phonegap-workshop-2013Haig Armen
 
Eric grover strategies for sharing code with windows 8 and windows phone 8 ...
Eric grover   strategies for sharing code with windows 8 and windows phone 8 ...Eric grover   strategies for sharing code with windows 8 and windows phone 8 ...
Eric grover strategies for sharing code with windows 8 and windows phone 8 ...Eric Grover
 
BEdita, a development platform
BEdita, a development platformBEdita, a development platform
BEdita, a development platformStefano Rosanelli
 
IBM BlueMix Architecture and Deep Dive (Powered by CloudFoundry)
IBM BlueMix Architecture and Deep Dive (Powered by CloudFoundry) IBM BlueMix Architecture and Deep Dive (Powered by CloudFoundry)
IBM BlueMix Architecture and Deep Dive (Powered by CloudFoundry) Animesh Singh
 
Skinny Framework Progress Situation
Skinny Framework Progress SituationSkinny Framework Progress Situation
Skinny Framework Progress SituationKazuhiro Sera
 
HTML5: The Apps, the Frameworks, the Controversy
HTML5: The Apps, the Frameworks, the Controversy HTML5: The Apps, the Frameworks, the Controversy
HTML5: The Apps, the Frameworks, the Controversy Apigee | Google Cloud
 
Open Social Frameworks
Open Social FrameworksOpen Social Frameworks
Open Social Frameworksrsandhu1
 

Similar a Do not reinvent the wheel with Cocoa libraries (20)

iOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for JasakomeriOS Development - Offline Class for Jasakomer
iOS Development - Offline Class for Jasakomer
 
Understanding iOS from an Android perspective
Understanding iOS from an Android perspectiveUnderstanding iOS from an Android perspective
Understanding iOS from an Android perspective
 
CouchDB
CouchDBCouchDB
CouchDB
 
E4 Eclipse Super Force
E4 Eclipse Super ForceE4 Eclipse Super Force
E4 Eclipse Super Force
 
Shankar
ShankarShankar
Shankar
 
Cross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual StudioCross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual Studio
 
Building Commercial Applications with Oracle Applications Express by Scott Sp...
Building Commercial Applications with Oracle Applications Express by Scott Sp...Building Commercial Applications with Oracle Applications Express by Scott Sp...
Building Commercial Applications with Oracle Applications Express by Scott Sp...
 
DevOps Sydney- Building Better Containers with Habitat
DevOps Sydney- Building Better Containers with HabitatDevOps Sydney- Building Better Containers with Habitat
DevOps Sydney- Building Better Containers with Habitat
 
ID-ObjectiveConference 2012 - Introduction to iOS Development
ID-ObjectiveConference 2012 - Introduction to iOS DevelopmentID-ObjectiveConference 2012 - Introduction to iOS Development
ID-ObjectiveConference 2012 - Introduction to iOS Development
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I started
 
Yii Framework - Do we really need another php framework?
Yii Framework - Do we really need another php framework?Yii Framework - Do we really need another php framework?
Yii Framework - Do we really need another php framework?
 
Adobe phonegap-workshop-2013
Adobe phonegap-workshop-2013Adobe phonegap-workshop-2013
Adobe phonegap-workshop-2013
 
Eric grover strategies for sharing code with windows 8 and windows phone 8 ...
Eric grover   strategies for sharing code with windows 8 and windows phone 8 ...Eric grover   strategies for sharing code with windows 8 and windows phone 8 ...
Eric grover strategies for sharing code with windows 8 and windows phone 8 ...
 
BEdita, a development platform
BEdita, a development platformBEdita, a development platform
BEdita, a development platform
 
IBM BlueMix Architecture and Deep Dive (Powered by CloudFoundry)
IBM BlueMix Architecture and Deep Dive (Powered by CloudFoundry) IBM BlueMix Architecture and Deep Dive (Powered by CloudFoundry)
IBM BlueMix Architecture and Deep Dive (Powered by CloudFoundry)
 
Skinny Framework Progress Situation
Skinny Framework Progress SituationSkinny Framework Progress Situation
Skinny Framework Progress Situation
 
201010 SPLASH Tutorial
201010 SPLASH Tutorial201010 SPLASH Tutorial
201010 SPLASH Tutorial
 
HTML5: The Apps, the Frameworks, the Controversy
HTML5: The Apps, the Frameworks, the Controversy HTML5: The Apps, the Frameworks, the Controversy
HTML5: The Apps, the Frameworks, the Controversy
 
Open Social Frameworks
Open Social FrameworksOpen Social Frameworks
Open Social Frameworks
 
Introducing J2ME Polish
Introducing J2ME PolishIntroducing J2ME Polish
Introducing J2ME Polish
 

Último

SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 

Último (20)

SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 

Do not reinvent the wheel with Cocoa libraries

  • 1. Do not reinvent the wheel Make use of Cocoa libraries and ready components Mateusz Klimczak
  • 2. Agenda ! Overview of the most popular Cocoa libraries and ready components ! When to use ready components? ! CocoaPods – an easy way to organise your components ! Let’s create our own Pod ! Use Gemfile to control the CocoaPods version ! Discussion
  • 3. ! Probably the most popular iOS library ! Main features: ! Encapsulates the common patterns of communicating with a web application over HTPP: GET, POST, PUT, DELETE, etc. ! Easy request serialisation ! Since 2.0 version support for caching downloaded images (both in-memory and disk caching) ! Network reachability manager
  • 4. ReactiveCocoa ! Objective-C framework inspired by Functional Reactive Programming ! Provides APIs for composing and transforming streams of values ! Instead of using mutable variables RAC provides signals that capture present and future values ! Widely discussed on last meeting
  • 5. RAC – usage example
  • 6. ! Amazing tool for crash reporting with support for both iOS and Android ! Provides detailed statistics about crashes ! Recently integrated into Twitter’s Fabric.IO – mobile platform for mobile analytics, app distribution and reporting ! Allows integration with Trello&BitBucket ! Live example!
  • 7. CocoaLumberjack ! Logging framework for Mac and iOS ! Faster than NSLog ! Main features: ! Send logs over the network ! Use multiple loggers to log simultaneously to many places (file, console, database) ! Define different log levels per logger
 (e.g. log verbose to console, but briefly to log server)
  • 8. MagicalRecord ! Inspired by RoR Active Record Fetching ! Active Record is an approach to accessing data in database ! Database table is wrapped into a class ! Object instance is tied to a single row in the database table ! The wrapper class implements properties for each column in the table ! Allows clear, simple, one-line fetches from CoreData
  • 9. FXKeychain ! Lightweight wrapper around the Apple keychain API ! Exposes the commonly used functionality while hiding complexity of underlying APIs
  • 10. RHAddressBook ! Library for interfacing with the iOS AddressBook ! All contact attributes on various objects (Person, Group) are exposed as properties – no more dealing with CF methods
  • 11. TPKeyboardAvoiding ! Universal solution for moving text fields out of the keyboard in iOS ! Uses UIScrollView/UITableView subclasses that handles everything for you
  • 12. PaymentKit ! Library providing utility methods for dealing with credit card payments: ! Credit card number validation&formatting ! Expiration validation ! Credit card type checking ! Credit card providers icons fetching ! Ready to use UI components for to input card data
  • 13. card.io ! Provides ready to use credit card scanning
  • 14. XMLDictionary ! Library for parsing and generating XMLs ! Allows parsing XML received from server to NSDictionary and vice versa
  • 15. TSMessages ! Provides an easy to use class to show little notification views on the top of the screen
  • 16. MSDynamicsDrawerViewController ! Container view controller that manages the presentation of a single view controller overlaid over drawer view controllers ! Supports swipe to open and close the drawer
  • 17. MBProgressHUD ! Customisable, easy to use progress HUD with an indicator while work is being done in background thread
  • 18. JSQMessagesViewController ! Messages UI library for iOS ! Allows displaying media, map location and more
  • 19. And many, many more… ! Kiwi ! Specta ! Masonry ! PureLayout ! GPUImage ! JSONKit ! Facebook/Twitter/Google ! …
  • 20. When to use ready components? ! We want to save some time (it’s not always worth it – to be continued) ! Library/component is still developed and preferably have more than 1 contributor ! We don’t need a full control of the code ! We don’t need to provide a high-level security ! If it is a UI component, we don’t have to create highly customised interface
  • 21. ! Dependency manager for Swift and Objective-C project ! According to the http://rubygems.org currently there are over 1.1 million downloads of CocoaPods (it doesn’t mean that there are that many users) ! http://cocoapods.org sites are generating 180k visits per month ! You can try the demo project of the Pod without integrating it into your project
  • 22. ! It’s easy to get started ! Installation: ! gem install cocoapods ! Create Podfile ! pod init ! Add pods references to your Podfile ! Run command: ! pod install ! Use .xcworkspace instead of .xcodeproj
  • 23. ! Life example – let’s create our own Pod! ! Instructions: http://guides.cocoapods.org/making/ making-a-cocoapod.html
  • 24. Gemfile ! Use Gemfile to keep the same version of CocoaPods for everyone in team ! Gemfile should specify the required version of CocoaPods ! Install pods using: ! bundle exec pod install
  • 25. Discussion! ! What libraries do you most often use? ! When do you prefer to write your own code? ! Your experiences!