SlideShare a Scribd company logo
1 of 33
Developing for iOS
                               Some of the practices




                                   Oleksandr Lobunets
                           oleksandr.lobunets@fit.fraunhofer.de

Sunday, October 28, 12
Outline


                         Background

                         Recommended resources

                         The Practices

                         Q&A




Sunday, October 28, 12
Background
                           Academical

                           National Technical University of Ukraine
                           “KPI”, Institute of Physics & Technology.
                           (1998 - 2004) B.S. / M.S. in Applied
                           Mathematics

                           National Space Agency of Ukraine, Space
                           Research Institute. (2003 - 2006) Junior
                           Researcher

                           RWTH Aachen, B-IT. (2007 - 2010) M.S. in
                           Media Informatics

                           Fraunhofer FIT, CSCW Group (2010 - now)




Sunday, October 28, 12
Background
                          In the industry




Sunday, October 28, 12
Recommended resources

                         iTunes-U

                         Famous Stanford’s “iPhone Application
                         Development”
                         (2009 is probably too outdated)



                         RWTH Aachen “iPhone Application
                         Development”
                         (Jan Borchers)




Sunday, October 28, 12
Some books...




                         iPhone SDK Development Building iPhone Applications by Bill Dudney Chris Adamson

                         Core Data Apple’s API for Persisting Data under Mac OS X by Marcus S. Zarra

                         Pro iOS Table Views for iPhone, iPad, and iPod Touch by Tim Duckett

                         Pro iOS 5 Augmented Reality by Kyle Roche



                                                                        There’re much, much more!

Sunday, October 28, 12
Blogs, links, etc


                         Apple Documentation

                         http://www.cocoawithlove.com/

                         http://www.beginningiosdev.com/

                         Stackoverflow ;)

                         etc



Sunday, October 28, 12
Dilemma



                         How to share the experience?




Sunday, October 28, 12
A fictional project!




Sunday, October 28, 12
A fictional project

                         Generalizes all non-functional requirements
                         from your assignments
                         (as far as I could guess from your blogs)


                         Complete iOS application lifecycle overview
                         (well, almost complete)


                         Just general overview of the process & some
                         of the practices
                         (too less time for the details)




Sunday, October 28, 12
Recall from SE

                         DIA?

                         Iterative incremental development?

                         Agile development?

                         What else do you remember from classes
                         interactive system design and software
                         engineering?




Sunday, October 28, 12
The flow: Product Steps

                         Idea, developing the vision

                         Market/competitors analysis (sounds very loud)

                         End up with MVP

                         Develop the PRD
                         (well, sounds too enterprise/corporate)


                         But meanwhile you just want to write some
                         code?
                         (Yes, you can. It’s called writing spikes - in other language - minimizing
                         technical risks)



Sunday, October 28, 12
The flow: Prototyping

                         Accompanies the product activities

                         Next - Prototyping (remember DIA?)

                           From Lo-Fi to Hi-Fi

                           Prototyping tools (paper, balsamiq,
                           omnigraffle, graffletopia, keynote, etc)

                           Graphical resources (!)

                           Examples


Sunday, October 28, 12
Example: Balsamiq




Sunday, October 28, 12
Example: OmniGraffle




Sunday, October 28, 12
Example: Keynote




Sunday, October 28, 12
The flow: Engineering
                         Now it comes to programming

                         The key points to focus as an engineer are:
                           Collaborative work on code
                           Some notes on memory management
                           Logging in your code
                           The foundation for your UI
                           Picking the application template/framework
                           Persistence of your data
                           Networking
                           Backend
                           Testing / Debugging / Builds / CI / Distribution


Sunday, October 28, 12
Collaborative work


                         Versioning system: Git
                         (already covered in the lectures)

                         You already use Github




                               What about keeping privacy?


Sunday, October 28, 12
Collaborative work



                                 +




Sunday, October 28, 12
+

                         Create a “bare” repo in the Dropbox folder

                         Checkout to your working folder or

                         ...add remote file://$HOME/Dropbox/your_repo

                         Share the Dropbox folder

                         PROFIT!




                            http://tumblr.intranation.com/post/766290743/using-dropbox-git-repository
Sunday, October 28, 12
Memory management
                         First decide which iOS version you want to
                         support

                         Manual memory management
                         (retain/release manually)

                         Automatic Reference Counting (ARC)

                           Introduced in iOS5

                           Works in iOS4 (limited)




Sunday, October 28, 12
Logging

                         NSLog(...)

                         How to drop it in the release builds? Why? ;)

                         Custom conditional logging classes vs macros

                         Go for macro :) as the almost a drop in
                         replacement




Sunday, October 28, 12
Logging
                         Add to your <AppName>_Prefix.pch file:
                         #ifdef DEBUG
                         #	 define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
                         #else
                         #	 define DLog(...)
                         #endif

                         // ALog always displays output regardless of the DEBUG setting
                         #define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);




                         Usage
                         DLog();
                         DLog(@"here");
                         DLog(@"value: %d", x);
                         // Unfortunately this doesn't work DLog(aStringVariable);
                         // you have to do this instead:
                         DLog(@"%@", aStringVariable);



                         Set preprocessor flags (DEBUG/DDEBUG)

                           http://iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog
Sunday, October 28, 12
UI foundation

                         Decision based on your hi-fi prototypes

                         Standard elements
                         (UIKit, additionally some high level libraries, keep you stick to HUG,
                         still possible to violate)


                         Non-standard
                         (UIKit, custom libraries, program your UIView, relies heavily on
                         graphical resources, custom drawing. Think about UX. Usage of 2D
                         game frameworks)


                         3D
                         (GLView, custom Open GL SE programming, use existing3D engines,
                         license vs efforts costs)


Sunday, October 28, 12
App template/framework

                         Xcode built-in templates

                         Usage of Storyboards

                         3rd party framework
                         PureMVC, Three20, Cocos2D/3D, etc




Sunday, October 28, 12
Data persistence


                         Files

                         UserDefaults (preferences)

                         SQLite

                         CoreData




Sunday, October 28, 12
Networking
                         Reachability Framework
                         (https://github.com/tonymillion/Reachability)

                             Great way to check network connectivity (UX!)

                             Impacts on how you organize your app logic




Sunday, October 28, 12
Networking


                         Dealing with RESTful XML/JSON APIs
                           RestKit (http://restkit.org/)

                           RESTFramework (https://github.com/ivasic/RESTframework)

                           SBJSON (http://stig.github.com/json-framework/)


                         There’s a number of choices

                         The selection depends on the backend



Sunday, October 28, 12
Backend
                         Custom vs SaaS

                         Custom
                           Pick your favorite stack and deploy to PaaS/IaaS)

                           Example: Python/Django/Tastypie on dotCloud/Heroku


                         SaaS
                           http://www.slideshare.net/raminf/iphone-backend-servers

                           All in one DataKit (Node.js/MongoDB)
                           https://github.com/eaigner/DataKit

                           Another example: http://www.apiomat.com/


Sunday, October 28, 12
Test/Debug



                         Testing (unit testing, functional, system/ui)

                         Debugging (1st element - logs, tools,
                         simulator vs device debugging - location
                         debugging)




Sunday, October 28, 12
Build/Distribute

                         Building locally & distributing manually

                           Distribute via Email, Dropbox, etc

                         Continuous Integration (CI)

                           Centralized build with CI server

                           Centralized publishing/distribution

                           Running tests, gathering metrics, etc


Sunday, October 28, 12
Build/Distribute
                         “Jenkins is an open-source continuous
                         integration server with 300+ plugins to
                         support all kinds of software
                         development”

                         Standard de facto

                         Resources on how to configure:
                           http://zanshin.net/2012/02/27/setup-jenkins-for-ios-builds/

                           http://eclipsesource.com/blogs/2012/06/01/ups-and-downs-
                           with-continuous-integration-for-ios-apps-jenkins-xcode-
                           cobertura-and-testflight/




Sunday, October 28, 12
Q&A


                                 Oleksandr Lobunets
                         oleksandr.lobunets@fit.fraunhofer.de

Sunday, October 28, 12

More Related Content

Similar to iOS Development. Some practices.

OCaml Labs introduction at OCaml Consortium 2012
OCaml Labs introduction at OCaml Consortium 2012OCaml Labs introduction at OCaml Consortium 2012
OCaml Labs introduction at OCaml Consortium 2012
Anil Madhavapeddy
 
building_private_cloud_with_oss_for_scientific_environments-libre
building_private_cloud_with_oss_for_scientific_environments-librebuilding_private_cloud_with_oss_for_scientific_environments-libre
building_private_cloud_with_oss_for_scientific_environments-libre
Vijayabalan Open to Explore
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learned
Wojciech Koszek
 
Python for Financial Data Analysis with pandas
Python for Financial Data Analysis with pandasPython for Financial Data Analysis with pandas
Python for Financial Data Analysis with pandas
Wes McKinney
 
Slides 111017220255-phpapp01
Slides 111017220255-phpapp01Slides 111017220255-phpapp01
Slides 111017220255-phpapp01
Ken Mwai
 

Similar to iOS Development. Some practices. (20)

Scientific Applications with Python
Scientific Applications with PythonScientific Applications with Python
Scientific Applications with Python
 
OSCON 2013: Using Cascalog to build an app with City of Palo Alto Open Data
OSCON 2013: Using Cascalog to build an app with City of Palo Alto Open DataOSCON 2013: Using Cascalog to build an app with City of Palo Alto Open Data
OSCON 2013: Using Cascalog to build an app with City of Palo Alto Open Data
 
Using Cascalog to build an app with City of Palo Alto Open Data
Using Cascalog to build an app with City of Palo Alto Open DataUsing Cascalog to build an app with City of Palo Alto Open Data
Using Cascalog to build an app with City of Palo Alto Open Data
 
OCaml Labs introduction at OCaml Consortium 2012
OCaml Labs introduction at OCaml Consortium 2012OCaml Labs introduction at OCaml Consortium 2012
OCaml Labs introduction at OCaml Consortium 2012
 
Skutil - H2O meets Sklearn - Taylor Smith
Skutil - H2O meets Sklearn - Taylor SmithSkutil - H2O meets Sklearn - Taylor Smith
Skutil - H2O meets Sklearn - Taylor Smith
 
NCDevCon2012_designing the mobile experience
NCDevCon2012_designing the mobile experienceNCDevCon2012_designing the mobile experience
NCDevCon2012_designing the mobile experience
 
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010
 
20150716 introduction to apache spark v3
20150716 introduction to apache spark v3 20150716 introduction to apache spark v3
20150716 introduction to apache spark v3
 
How to ReadTheDocs
How to ReadTheDocsHow to ReadTheDocs
How to ReadTheDocs
 
Final Year Project Guidance
Final Year Project GuidanceFinal Year Project Guidance
Final Year Project Guidance
 
Focus Group Open Source 28.4.2010 Paolo Maresca
Focus Group Open Source 28.4.2010 Paolo MarescaFocus Group Open Source 28.4.2010 Paolo Maresca
Focus Group Open Source 28.4.2010 Paolo Maresca
 
Squeak
SqueakSqueak
Squeak
 
System Dynamics and FOSS
System Dynamics and FOSSSystem Dynamics and FOSS
System Dynamics and FOSS
 
building_private_cloud_with_oss_for_scientific_environments-libre
building_private_cloud_with_oss_for_scientific_environments-librebuilding_private_cloud_with_oss_for_scientific_environments-libre
building_private_cloud_with_oss_for_scientific_environments-libre
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learned
 
Tod kurt
Tod kurtTod kurt
Tod kurt
 
Python for Financial Data Analysis with pandas
Python for Financial Data Analysis with pandasPython for Financial Data Analysis with pandas
Python for Financial Data Analysis with pandas
 
Slides 111017220255-phpapp01
Slides 111017220255-phpapp01Slides 111017220255-phpapp01
Slides 111017220255-phpapp01
 
On Storing Big Data
On Storing Big DataOn Storing Big Data
On Storing Big Data
 
The Rise of the DataOps - Dataiku - J On the Beach 2016
The Rise of the DataOps - Dataiku - J On the Beach 2016 The Rise of the DataOps - Dataiku - J On the Beach 2016
The Rise of the DataOps - Dataiku - J On the Beach 2016
 

Recently uploaded

Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
PECB
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
QucHHunhnh
 
An Overview of Mutual Funds Bcom Project.pdf
An Overview of Mutual Funds Bcom Project.pdfAn Overview of Mutual Funds Bcom Project.pdf
An Overview of Mutual Funds Bcom Project.pdf
SanaAli374401
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
kauryashika82
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
negromaestrong
 
Gardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterGardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch Letter
MateoGardella
 

Recently uploaded (20)

INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across Sectors
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docx
 
Advance Mobile Application Development class 07
Advance Mobile Application Development class 07Advance Mobile Application Development class 07
Advance Mobile Application Development class 07
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdf
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
An Overview of Mutual Funds Bcom Project.pdf
An Overview of Mutual Funds Bcom Project.pdfAn Overview of Mutual Funds Bcom Project.pdf
An Overview of Mutual Funds Bcom Project.pdf
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Gardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterGardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch Letter
 

iOS Development. Some practices.

  • 1. Developing for iOS Some of the practices Oleksandr Lobunets oleksandr.lobunets@fit.fraunhofer.de Sunday, October 28, 12
  • 2. Outline Background Recommended resources The Practices Q&A Sunday, October 28, 12
  • 3. Background Academical National Technical University of Ukraine “KPI”, Institute of Physics & Technology. (1998 - 2004) B.S. / M.S. in Applied Mathematics National Space Agency of Ukraine, Space Research Institute. (2003 - 2006) Junior Researcher RWTH Aachen, B-IT. (2007 - 2010) M.S. in Media Informatics Fraunhofer FIT, CSCW Group (2010 - now) Sunday, October 28, 12
  • 4. Background In the industry Sunday, October 28, 12
  • 5. Recommended resources iTunes-U Famous Stanford’s “iPhone Application Development” (2009 is probably too outdated) RWTH Aachen “iPhone Application Development” (Jan Borchers) Sunday, October 28, 12
  • 6. Some books... iPhone SDK Development Building iPhone Applications by Bill Dudney Chris Adamson Core Data Apple’s API for Persisting Data under Mac OS X by Marcus S. Zarra Pro iOS Table Views for iPhone, iPad, and iPod Touch by Tim Duckett Pro iOS 5 Augmented Reality by Kyle Roche There’re much, much more! Sunday, October 28, 12
  • 7. Blogs, links, etc Apple Documentation http://www.cocoawithlove.com/ http://www.beginningiosdev.com/ Stackoverflow ;) etc Sunday, October 28, 12
  • 8. Dilemma How to share the experience? Sunday, October 28, 12
  • 10. A fictional project Generalizes all non-functional requirements from your assignments (as far as I could guess from your blogs) Complete iOS application lifecycle overview (well, almost complete) Just general overview of the process & some of the practices (too less time for the details) Sunday, October 28, 12
  • 11. Recall from SE DIA? Iterative incremental development? Agile development? What else do you remember from classes interactive system design and software engineering? Sunday, October 28, 12
  • 12. The flow: Product Steps Idea, developing the vision Market/competitors analysis (sounds very loud) End up with MVP Develop the PRD (well, sounds too enterprise/corporate) But meanwhile you just want to write some code? (Yes, you can. It’s called writing spikes - in other language - minimizing technical risks) Sunday, October 28, 12
  • 13. The flow: Prototyping Accompanies the product activities Next - Prototyping (remember DIA?) From Lo-Fi to Hi-Fi Prototyping tools (paper, balsamiq, omnigraffle, graffletopia, keynote, etc) Graphical resources (!) Examples Sunday, October 28, 12
  • 17. The flow: Engineering Now it comes to programming The key points to focus as an engineer are: Collaborative work on code Some notes on memory management Logging in your code The foundation for your UI Picking the application template/framework Persistence of your data Networking Backend Testing / Debugging / Builds / CI / Distribution Sunday, October 28, 12
  • 18. Collaborative work Versioning system: Git (already covered in the lectures) You already use Github What about keeping privacy? Sunday, October 28, 12
  • 19. Collaborative work + Sunday, October 28, 12
  • 20. + Create a “bare” repo in the Dropbox folder Checkout to your working folder or ...add remote file://$HOME/Dropbox/your_repo Share the Dropbox folder PROFIT! http://tumblr.intranation.com/post/766290743/using-dropbox-git-repository Sunday, October 28, 12
  • 21. Memory management First decide which iOS version you want to support Manual memory management (retain/release manually) Automatic Reference Counting (ARC) Introduced in iOS5 Works in iOS4 (limited) Sunday, October 28, 12
  • 22. Logging NSLog(...) How to drop it in the release builds? Why? ;) Custom conditional logging classes vs macros Go for macro :) as the almost a drop in replacement Sunday, October 28, 12
  • 23. Logging Add to your <AppName>_Prefix.pch file: #ifdef DEBUG # define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); #else # define DLog(...) #endif // ALog always displays output regardless of the DEBUG setting #define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); Usage DLog(); DLog(@"here"); DLog(@"value: %d", x); // Unfortunately this doesn't work DLog(aStringVariable); // you have to do this instead: DLog(@"%@", aStringVariable); Set preprocessor flags (DEBUG/DDEBUG) http://iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog Sunday, October 28, 12
  • 24. UI foundation Decision based on your hi-fi prototypes Standard elements (UIKit, additionally some high level libraries, keep you stick to HUG, still possible to violate) Non-standard (UIKit, custom libraries, program your UIView, relies heavily on graphical resources, custom drawing. Think about UX. Usage of 2D game frameworks) 3D (GLView, custom Open GL SE programming, use existing3D engines, license vs efforts costs) Sunday, October 28, 12
  • 25. App template/framework Xcode built-in templates Usage of Storyboards 3rd party framework PureMVC, Three20, Cocos2D/3D, etc Sunday, October 28, 12
  • 26. Data persistence Files UserDefaults (preferences) SQLite CoreData Sunday, October 28, 12
  • 27. Networking Reachability Framework (https://github.com/tonymillion/Reachability) Great way to check network connectivity (UX!) Impacts on how you organize your app logic Sunday, October 28, 12
  • 28. Networking Dealing with RESTful XML/JSON APIs RestKit (http://restkit.org/) RESTFramework (https://github.com/ivasic/RESTframework) SBJSON (http://stig.github.com/json-framework/) There’s a number of choices The selection depends on the backend Sunday, October 28, 12
  • 29. Backend Custom vs SaaS Custom Pick your favorite stack and deploy to PaaS/IaaS) Example: Python/Django/Tastypie on dotCloud/Heroku SaaS http://www.slideshare.net/raminf/iphone-backend-servers All in one DataKit (Node.js/MongoDB) https://github.com/eaigner/DataKit Another example: http://www.apiomat.com/ Sunday, October 28, 12
  • 30. Test/Debug Testing (unit testing, functional, system/ui) Debugging (1st element - logs, tools, simulator vs device debugging - location debugging) Sunday, October 28, 12
  • 31. Build/Distribute Building locally & distributing manually Distribute via Email, Dropbox, etc Continuous Integration (CI) Centralized build with CI server Centralized publishing/distribution Running tests, gathering metrics, etc Sunday, October 28, 12
  • 32. Build/Distribute “Jenkins is an open-source continuous integration server with 300+ plugins to support all kinds of software development” Standard de facto Resources on how to configure: http://zanshin.net/2012/02/27/setup-jenkins-for-ios-builds/ http://eclipsesource.com/blogs/2012/06/01/ups-and-downs- with-continuous-integration-for-ios-apps-jenkins-xcode- cobertura-and-testflight/ Sunday, October 28, 12
  • 33. Q&A Oleksandr Lobunets oleksandr.lobunets@fit.fraunhofer.de Sunday, October 28, 12