SlideShare a Scribd company logo
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!

More Related Content

PDF
2013-04-16 iOS development speed up
CocoaHeads Tricity
 
PDF
.NET Day 2017 - ASP.NET Core mit Visual Studio und Docker
Marc Müller
 
PPT
Cache me if you can
Robbie Clutton
 
PPT
Microsoft� .NET and Microsoft� Office 2003
Rishi Kothari
 
PPTX
what new in ios 11
Prasetyo Herlambang
 
PPT
Microsoft .NET Development Platform Internationalization
Rishi Kothari
 
PPT
Asp.net architecture
Iblesoft
 
PPT
Asp net
MohitKumar1985
 
2013-04-16 iOS development speed up
CocoaHeads Tricity
 
.NET Day 2017 - ASP.NET Core mit Visual Studio und Docker
Marc Müller
 
Cache me if you can
Robbie Clutton
 
Microsoft� .NET and Microsoft� Office 2003
Rishi Kothari
 
what new in ios 11
Prasetyo Herlambang
 
Microsoft .NET Development Platform Internationalization
Rishi Kothari
 
Asp.net architecture
Iblesoft
 

What's hot (13)

PPTX
Building Hybrid Apps with AngularJS and Ionic
Younes Adounis
 
PPTX
Microsoft Cognitive Services & Bot Framework - Universidade Fernando Pessoa
Rui Quintino
 
PPTX
Building Native “apps” with Visual Studio 2015
Mike Melusky
 
PPTX
Microsoft Botframework and LUIS
Ian Philpot
 
PPT
Introduction to dot net framework by vaishali sahare [katkar]
vaishalisahare123
 
PPTX
Build a Great Conversationalist
Lorenzo Barbieri
 
PDF
4. RTFM, 나는프로그래머다 Meetup 2016 / 한국마이크로소프트 김명신 기술 에반젤리스트
양 한빛
 
PPT
Phonegap android
umesh patil
 
PPTX
Dev days 1 Introduction to Xamarin Taswar Bhatti
Taswar Bhatti
 
PDF
Azure Global Bootcamp 2017 - Microsoft Cognitive Services
George Spyrou
 
KEY
Cross Platform Development with Xamarin
bryan costanich
 
PDF
Building hybrid apps with Xamarin, Ryan Paul
Xamarin
 
PPTX
Introduction to .NET Framework and C# (English)
Vangos Pterneas
 
Building Hybrid Apps with AngularJS and Ionic
Younes Adounis
 
Microsoft Cognitive Services & Bot Framework - Universidade Fernando Pessoa
Rui Quintino
 
Building Native “apps” with Visual Studio 2015
Mike Melusky
 
Microsoft Botframework and LUIS
Ian Philpot
 
Introduction to dot net framework by vaishali sahare [katkar]
vaishalisahare123
 
Build a Great Conversationalist
Lorenzo Barbieri
 
4. RTFM, 나는프로그래머다 Meetup 2016 / 한국마이크로소프트 김명신 기술 에반젤리스트
양 한빛
 
Phonegap android
umesh patil
 
Dev days 1 Introduction to Xamarin Taswar Bhatti
Taswar Bhatti
 
Azure Global Bootcamp 2017 - Microsoft Cognitive Services
George Spyrou
 
Cross Platform Development with Xamarin
bryan costanich
 
Building hybrid apps with Xamarin, Ryan Paul
Xamarin
 
Introduction to .NET Framework and C# (English)
Vangos Pterneas
 
Ad

Viewers also liked (16)

PDF
I can I will - Unnati Unlimited
Unnati I CAN-I WILL
 
PPTX
Unnati Unlimited
Unnati I CAN-I WILL
 
PDF
PREZI
poytoccalino
 
PPTX
Unnati unlimited - About Us
Unnati I CAN-I WILL
 
PPTX
I can I will - Unnati Unlimited
Unnati I CAN-I WILL
 
PDF
LinkedIn Infographic draft 11_1200
AMComms
 
PDF
The definitive-guide-to LinkedIn
AMComms
 
PPTX
I can I will - Unnati Unlimited
Unnati I CAN-I WILL
 
PPTX
Breve historia del piano.
jean9023p
 
PDF
LinkedIn company pagesplaybook6 11-13
AMComms
 
PDF
[Hack3City] Estimote Beacons development - get started
Mateusz Klimczak
 
PPTX
Breve historia del piano.
jean9023p
 
PDF
I can I will - Unnati Unlimited
Unnati I CAN-I WILL
 
PDF
[CocoaHeads Tricity] watchOS 2 - native apps are coming
Mateusz Klimczak
 
PDF
FAQs on VRLA Gel batteries
cenergymaxpower.com
 
PDF
[CocoaHeads Tricity] Estimote Beacons - world most popular iBeacon implementa...
Mateusz Klimczak
 
I can I will - Unnati Unlimited
Unnati I CAN-I WILL
 
Unnati Unlimited
Unnati I CAN-I WILL
 
Unnati unlimited - About Us
Unnati I CAN-I WILL
 
I can I will - Unnati Unlimited
Unnati I CAN-I WILL
 
LinkedIn Infographic draft 11_1200
AMComms
 
The definitive-guide-to LinkedIn
AMComms
 
I can I will - Unnati Unlimited
Unnati I CAN-I WILL
 
Breve historia del piano.
jean9023p
 
LinkedIn company pagesplaybook6 11-13
AMComms
 
[Hack3City] Estimote Beacons development - get started
Mateusz Klimczak
 
Breve historia del piano.
jean9023p
 
I can I will - Unnati Unlimited
Unnati I CAN-I WILL
 
[CocoaHeads Tricity] watchOS 2 - native apps are coming
Mateusz Klimczak
 
FAQs on VRLA Gel batteries
cenergymaxpower.com
 
[CocoaHeads Tricity] Estimote Beacons - world most popular iBeacon implementa...
Mateusz Klimczak
 
Ad

Similar to [CocoaHeads Tricity] Do not reinvent the wheel (20)

PDF
iOS Development - Offline Class for Jasakomer
Andri Yadi
 
PDF
Understanding iOS from an Android perspective
Lauren Yew
 
PPTX
CouchDB
Jacob Diamond
 
ODT
E4 Eclipse Super Force
Kaniska Mandal
 
DOCX
Shankar
Shankar P
 
PPTX
Cross-Platform Development using Angulr JS in Visual Studio
Mizanur Sarker
 
PDF
Building Commercial Applications with Oracle Applications Express by Scott Sp...
Enkitec
 
PDF
DevOps Sydney- Building Better Containers with Habitat
Matt Ray
 
PDF
ID-ObjectiveConference 2012 - Introduction to iOS Development
Andri Yadi
 
PPTX
From React to React Native - Things I wish I knew when I started
sparkfabrik
 
ODP
Yii Framework - Do we really need another php framework?
Joachim Eckert
 
PDF
Adobe phonegap-workshop-2013
Haig Armen
 
PPTX
Eric grover strategies for sharing code with windows 8 and windows phone 8 ...
Eric Grover
 
PDF
BEdita, a development platform
Stefano Rosanelli
 
PDF
IBM BlueMix Architecture and Deep Dive (Powered by CloudFoundry)
Animesh Singh
 
PDF
Skinny Framework Progress Situation
Kazuhiro Sera
 
PDF
201010 SPLASH Tutorial
Javier Gonzalez-Sanchez
 
PPTX
HTML5: The Apps, the Frameworks, the Controversy
Apigee | Google Cloud
 
PPTX
Open Social Frameworks
rsandhu1
 
PDF
Introducing J2ME Polish
Adam Cohen-Rose
 
iOS Development - Offline Class for Jasakomer
Andri Yadi
 
Understanding iOS from an Android perspective
Lauren Yew
 
CouchDB
Jacob Diamond
 
E4 Eclipse Super Force
Kaniska Mandal
 
Shankar
Shankar P
 
Cross-Platform Development using Angulr JS in Visual Studio
Mizanur Sarker
 
Building Commercial Applications with Oracle Applications Express by Scott Sp...
Enkitec
 
DevOps Sydney- Building Better Containers with Habitat
Matt Ray
 
ID-ObjectiveConference 2012 - Introduction to iOS Development
Andri Yadi
 
From React to React Native - Things I wish I knew when I started
sparkfabrik
 
Yii Framework - Do we really need another php framework?
Joachim Eckert
 
Adobe phonegap-workshop-2013
Haig Armen
 
Eric grover strategies for sharing code with windows 8 and windows phone 8 ...
Eric Grover
 
BEdita, a development platform
Stefano Rosanelli
 
IBM BlueMix Architecture and Deep Dive (Powered by CloudFoundry)
Animesh Singh
 
Skinny Framework Progress Situation
Kazuhiro Sera
 
201010 SPLASH Tutorial
Javier Gonzalez-Sanchez
 
HTML5: The Apps, the Frameworks, the Controversy
Apigee | Google Cloud
 
Open Social Frameworks
rsandhu1
 
Introducing J2ME Polish
Adam Cohen-Rose
 

Recently uploaded (20)

PDF
Community & News Update Q2 Meet Up 2025
VictoriaMetrics
 
PPTX
Benefits of DCCM for Genesys Contact Center
pointel ivr
 
PDF
Build Multi-agent using Agent Development Kit
FadyIbrahim23
 
PDF
Micromaid: A simple Mermaid-like chart generator for Pharo
ESUG
 
PDF
QAware_Mario-Leander_Reimer_Architecting and Building a K8s-based AI Platform...
QAware GmbH
 
PDF
Jenkins: An open-source automation server powering CI/CD Automation
SaikatBasu37
 
PPTX
Why Use Open Source Reporting Tools for Business Intelligence.pptx
Varsha Nayak
 
PDF
What to consider before purchasing Microsoft 365 Business Premium_PDF.pdf
Q-Advise
 
PDF
Solar Panel Installation Guide – Step By Step Process 2025.pdf
CRMLeaf
 
PDF
IEEE-CS Tech Predictions, SWEBOK and Quantum Software: Towards Q-SWEBOK
Hironori Washizaki
 
PDF
Exploring AI Agents in Process Industries
amoreira6
 
PPTX
Odoo Integration Services by Candidroot Solutions
CandidRoot Solutions Private Limited
 
DOCX
The Future of Smart Factories Why Embedded Analytics Leads the Way
Varsha Nayak
 
PDF
Why Use Open Source Reporting Tools for Business Intelligence.pdf
Varsha Nayak
 
PDF
Become an Agentblazer Champion Challenge
Dele Amefo
 
PDF
The Role of Automation and AI in EHS Management for Data Centers.pdf
TECH EHS Solution
 
DOCX
The Five Best AI Cover Tools in 2025.docx
aivoicelabofficial
 
PPTX
Materi-Enum-and-Record-Data-Type (1).pptx
RanuFajar1
 
PDF
Winning Business in a Slowing Economy, How CPQ helps Manufacturers Protect Ma...
systemscincom
 
PPTX
Save Business Costs with CRM Software for Insurance Agents
Insurance Tech Services
 
Community & News Update Q2 Meet Up 2025
VictoriaMetrics
 
Benefits of DCCM for Genesys Contact Center
pointel ivr
 
Build Multi-agent using Agent Development Kit
FadyIbrahim23
 
Micromaid: A simple Mermaid-like chart generator for Pharo
ESUG
 
QAware_Mario-Leander_Reimer_Architecting and Building a K8s-based AI Platform...
QAware GmbH
 
Jenkins: An open-source automation server powering CI/CD Automation
SaikatBasu37
 
Why Use Open Source Reporting Tools for Business Intelligence.pptx
Varsha Nayak
 
What to consider before purchasing Microsoft 365 Business Premium_PDF.pdf
Q-Advise
 
Solar Panel Installation Guide – Step By Step Process 2025.pdf
CRMLeaf
 
IEEE-CS Tech Predictions, SWEBOK and Quantum Software: Towards Q-SWEBOK
Hironori Washizaki
 
Exploring AI Agents in Process Industries
amoreira6
 
Odoo Integration Services by Candidroot Solutions
CandidRoot Solutions Private Limited
 
The Future of Smart Factories Why Embedded Analytics Leads the Way
Varsha Nayak
 
Why Use Open Source Reporting Tools for Business Intelligence.pdf
Varsha Nayak
 
Become an Agentblazer Champion Challenge
Dele Amefo
 
The Role of Automation and AI in EHS Management for Data Centers.pdf
TECH EHS Solution
 
The Five Best AI Cover Tools in 2025.docx
aivoicelabofficial
 
Materi-Enum-and-Record-Data-Type (1).pptx
RanuFajar1
 
Winning Business in a Slowing Economy, How CPQ helps Manufacturers Protect Ma...
systemscincom
 
Save Business Costs with CRM Software for Insurance Agents
Insurance Tech Services
 

[CocoaHeads Tricity] Do not reinvent the wheel

  • 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!