SlideShare a Scribd company logo
1 of 94
Walkthrough of Building an iPhone App
Damian OSuilleabhain
OS3
Who Am I?
Who Am I?

• Software Developer with 15 Years Experience
Who Am I?

• Software Developer with 15 Years Experience


• Worked with VB, Java, Classic ASP, JSP, C# and ASP.NET
Who Am I?

• Software Developer with 15 Years Experience


• Worked with VB, Java, Classic ASP, JSP, C# and ASP.NET


• Bought an iPhone in 2008 - A gateway drug!
Who Am I?

• Software Developer with 15 Years Experience


• Worked with VB, Java, Classic ASP, JSP, C# and ASP.NET


• Bought an iPhone in 2008 - A gateway drug!


• Shortly thereafter Bought a MacBookPro, learned Objective C and Cocoa
Who Am I?

• Software Developer with 15 Years Experience


• Worked with VB, Java, Classic ASP, JSP, C# and ASP.NET


• Bought an iPhone in 2008 - A gateway drug!


• Shortly thereafter Bought a MacBookPro, learned Objective C and Cocoa


• Now working as a Full Time Freelance iPhone Developer
Who Am I?

• Software Developer with 15 Years Experience


• Worked with VB, Java, Classic ASP, JSP, C# and ASP.NET


• Bought an iPhone in 2008 - A gateway drug!


• Shortly thereafter Bought a MacBookPro, learned Objective C and Cocoa


• Now working as a Full Time Freelance iPhone Developer


• 3 of My Own Apps on the App Store, 2 for Clients, More in development
Who Am I?

• Software Developer with 15 Years Experience


• Worked with VB, Java, Classic ASP, JSP, C# and ASP.NET


• Bought an iPhone in 2008 - A gateway drug!


• Shortly thereafter Bought a MacBookPro, learned Objective C and Cocoa


• Now working as a Full Time Freelance iPhone Developer


• 3 of My Own Apps on the App Store, 2 for Clients, More in development


• Interested in collaborations or projects
Goal For This Session
Goal For This Session

• A Walkthrough of Building a Simple iPhone Application
Goal For This Session

• A Walkthrough of Building a Simple iPhone Application


• Apply the Knowledge Gained in the Introduction to Objective-C
Goal For This Session

• A Walkthrough of Building a Simple iPhone Application


• Apply the Knowledge Gained in the Introduction to Objective-C


• Give you a Grounding in the Fundamentals of an iPhone Application
What Will We Build?
What Will We Build?

• “Epic Tweets”
What Will We Build?

• “Epic Tweets”


• A simple Twitter client
What Will We Build?

• “Epic Tweets”


• A simple Twitter client


• Shows the public timeline
What Will We Build?

• “Epic Tweets”


• A simple Twitter client


• Shows the public timeline


• Demonstrates the principles discussed
Epic Tweets
Epic Tweets
Epic Tweets
What Will Be Covered
What Will Be Covered

• Developer Tools
What Will Be Covered

• Developer Tools


• Design Patterns
What Will Be Covered

• Developer Tools


• Design Patterns


• Project Structure  
What Will Be Covered

• Developer Tools


• Design Patterns


• Project Structure  


• Visually Design Your Application's Interface
What Will Be Covered

• Developer Tools


• Design Patterns


• Project Structure  


• Visually Design Your Application's Interface


• Responding to User Input
What Will Be Covered

• Developer Tools


• Design Patterns


• Project Structure  


• Visually Design Your Application's Interface


• Responding to User Input


• Connecting the Interface to Your Code
What Will Be Covered

• Developer Tools


• Design Patterns


• Project Structure  


• Visually Design Your Application's Interface


• Responding to User Input


• Connecting the Interface to Your Code


• What We Have Not Covered
What Will Be Covered

• Developer Tools


• Design Patterns


• Project Structure  


• Visually Design Your Application's Interface


• Responding to User Input


• Connecting the Interface to Your Code


• What We Have Not Covered


• Questions
Developer Tools
Developer Tools

• Xcode
Developer Tools

• Xcode


• Interface Builder
Developer Tools

• Xcode


• Interface Builder


• Simulator
Developer Tools

• Xcode


• Interface Builder


• Simulator


• Instruments
Developer Tools - Xcode
Developer Tools - Xcode

• Xcode is an integrated development environment (IDE) that provides all of the
  tools you need to;
Developer Tools - Xcode

• Xcode is an integrated development environment (IDE) that provides all of the
  tools you need to;


   • create and manage your iPhone projects and source files,
Developer Tools - Xcode

• Xcode is an integrated development environment (IDE) that provides all of the
  tools you need to;


   • create and manage your iPhone projects and source files,


   • build your code into an executable, and
Developer Tools - Xcode

• Xcode is an integrated development environment (IDE) that provides all of the
  tools you need to;


   • create and manage your iPhone projects and source files,


   • build your code into an executable, and


   • run and debug your code either in iPhone simulator or on a device.
Developer Tools - Interface Builder
Developer Tools - Interface Builder

• Interface Builder is the tool you use to assemble your application’s user
  interface visually.
Developer Tools - Interface Builder

• Interface Builder is the tool you use to assemble your application’s user
  interface visually.


• Using Interface Builder, you assemble your application’s window by dragging
  and dropping preconfigured components onto it.
Developer Tools - Simulator
Developer Tools - Simulator

• The iPhone simulation environment lets you build and run your iPhone
  application on your computer
Developer Tools - Simulator

• The iPhone simulation environment lets you build and run your iPhone
  application on your computer


• Presents the iPhone user interface in a window on your computer
Developer Tools - Simulator

• The iPhone simulation environment lets you build and run your iPhone
  application on your computer


• Presents the iPhone user interface in a window on your computer


• Lets you simulate most of the actions a user performs on their device
Developer Tools - Simulator

• The iPhone simulation environment lets you build and run your iPhone
  application on your computer


• Presents the iPhone user interface in a window on your computer


• Lets you simulate most of the actions a user performs on their device


• Important to note a simulator, not an emulator. Does not give a realistic view
  of memory or processor performance
Developer Tools - Instruments
Developer Tools - Instruments

• The Instruments environment lets you analyse the performance of your
  iPhone applications while running in the simulator or on a device.
Developer Tools - Instruments

• The Instruments environment lets you analyse the performance of your
  iPhone applications while running in the simulator or on a device.


• You can gather data about your application’s memory usage, disk activity,
  network activity, and graphics performance.
Design Patterns
Design Patterns

• Delegation
Design Patterns

• Delegation


• Model View Controller
Design Patterns

• Delegation


• Model View Controller


• Target-Action
Design Patterns - Delegation
Design Patterns - Delegation

• The delegation design pattern is a way of modifying complex objects without
  subclassing them.
Design Patterns - Delegation

• The delegation design pattern is a way of modifying complex objects without
  subclassing them.


• Instead of subclassing, you use the complex object as is and put any custom
  code for modifying the behaviour of that object inside a separate object,
  which is referred to as the delegate object.
Design Patterns - Delegation

• The delegation design pattern is a way of modifying complex objects without
  subclassing them.


• Instead of subclassing, you use the complex object as is and put any custom
  code for modifying the behaviour of that object inside a separate object,
  which is referred to as the delegate object.


• At pre-defined times, the complex object then calls the methods of the
  delegate object to give it a chance to run its custom code.
Design Patterns - MVC
Design Patterns - MVC

• The Model-View-Controller (MVC) design pattern is a way of dividing your
  code into independent functional areas.
Design Patterns - MVC

• The Model-View-Controller (MVC) design pattern is a way of dividing your
  code into independent functional areas.


• The model portion defines your application’s underlying data engine and is
  responsible for maintaining the integrity of that data.
Design Patterns - MVC

• The Model-View-Controller (MVC) design pattern is a way of dividing your
  code into independent functional areas.


• The model portion defines your application’s underlying data engine and is
  responsible for maintaining the integrity of that data.


• The view portion defines the user interface for your application and has no
  explicit knowledge of the origin of data displayed in that interface.
Design Patterns - MVC

• The Model-View-Controller (MVC) design pattern is a way of dividing your
  code into independent functional areas.


• The model portion defines your application’s underlying data engine and is
  responsible for maintaining the integrity of that data.


• The view portion defines the user interface for your application and has no
  explicit knowledge of the origin of data displayed in that interface.


• The controller portion acts as a bridge between the model and view and
  facilitates updates between them.
Design Patterns - Target-Action
Design Patterns - Target-Action

• Controls use the target-action design pattern to notify your application of
  user interactions.
Design Patterns - Target-Action

• Controls use the target-action design pattern to notify your application of
  user interactions.


• When the user interacts with a control in a predefined way (such as by
  tapping a button), the control sends a message (the action) to an object you
  specify (the target).
Design Patterns - Target-Action

• Controls use the target-action design pattern to notify your application of
  user interactions.


• When the user interacts with a control in a predefined way (such as by
  tapping a button), the control sends a message (the action) to an object you
  specify (the target).


• Upon receiving the action message, the target object can then respond in an
  appropriate manner (such as by updating application state in response to the
  button push).
Project Structure
Project Structure

• Class Files
Project Structure

• Class Files


   • Definitions (*.h)
Project Structure

• Class Files


   • Definitions (*.h)


   • Implementations (*.m)
Project Structure

• Class Files


   • Definitions (*.h)


   • Implementations (*.m)


• Resources
Project Structure

• Class Files


   • Definitions (*.h)


   • Implementations (*.m)


• Resources


   • Property Lists (*.plist)
Project Structure

• Class Files


   • Definitions (*.h)


   • Implementations (*.m)


• Resources


   • Property Lists (*.plist)


   • Interface Files (*.xib)
Project Structure

• Class Files


   • Definitions (*.h)


   • Implementations (*.m)


• Resources


   • Property Lists (*.plist)


   • Interface Files (*.xib)


   • Images, audio etc.
The Code Demo
The Code Demo

• Visually Design Your Application's Interface
The Code Demo

• Visually Design Your Application's Interface


• Connect the Interface With Your Code
The Code Demo

• Visually Design Your Application's Interface


• Connect the Interface With Your Code


• Responding To User Input
What We Have Not Covered
What We Have Not Covered

• Non Technical
What We Have Not Covered

• Non Technical


  • Getting Set-up with Digital Certificates
What We Have Not Covered

• Non Technical


  • Getting Set-up with Digital Certificates


  • App Store Submission Process
What We Have Not Covered

• Non Technical


  • Getting Set-up with Digital Certificates


  • App Store Submission Process


• Technical
What We Have Not Covered

• Non Technical


  • Getting Set-up with Digital Certificates


  • App Store Submission Process


• Technical


  • Details of the XML Parser
Questions
Questions

• Any Questions on Anything We Have Covered?
Contact Details
Contact Details

• Email:   damian@os3.ie
Contact Details

• Email:   damian@os3.ie


• Twitter: @DamianOS3
Contact Details

• Email:   damian@os3.ie


• Twitter: @DamianOS3


• Web:     http://os3.ie
Contact Details

• Email:   damian@os3.ie


• Twitter: @DamianOS3


• Web:     http://os3.ie


• Happy to answer any questions you have on iPhone development
Contact Details

• Email:   damian@os3.ie


• Twitter: @DamianOS3


• Web:     http://os3.ie


• Happy to answer any questions you have on iPhone development


• Even happier to discuss any projects you would like me to do!

More Related Content

Viewers also liked

Invertir En Zonas Francas Ecuador
Invertir En Zonas Francas EcuadorInvertir En Zonas Francas Ecuador
Invertir En Zonas Francas Ecuadorjoseneopp23
 
Letter from chair of ltsc to seed
Letter from chair of ltsc to seedLetter from chair of ltsc to seed
Letter from chair of ltsc to seedSEED_Breathe
 
Summer School 2010 Reader public
Summer School 2010 Reader publicSummer School 2010 Reader public
Summer School 2010 Reader publicSocialBanking
 
Azmat e waldain e rasool by allama hafiz muhammad younus madni
Azmat e waldain e rasool by allama hafiz muhammad younus madniAzmat e waldain e rasool by allama hafiz muhammad younus madni
Azmat e waldain e rasool by allama hafiz muhammad younus madniMuhammad Tariq
 
Manual de Identidad visual corporativa
Manual de Identidad visual corporativaManual de Identidad visual corporativa
Manual de Identidad visual corporativaDa_luz
 
Agenda del Comité de Innovación (Fundación EXECyL)
Agenda del Comité de Innovación (Fundación EXECyL)Agenda del Comité de Innovación (Fundación EXECyL)
Agenda del Comité de Innovación (Fundación EXECyL)Aurora López García
 
Set up, grow and successfully engage members of your panel final
Set up, grow and successfully engage members of your panel   finalSet up, grow and successfully engage members of your panel   final
Set up, grow and successfully engage members of your panel finalQuestionPro
 
Zulia acella marco 3ero c 1
Zulia acella marco 3ero c 1Zulia acella marco 3ero c 1
Zulia acella marco 3ero c 1marcoacella
 
Tecnicas%20de%20identificacion%20bacteriana
Tecnicas%20de%20identificacion%20bacterianaTecnicas%20de%20identificacion%20bacteriana
Tecnicas%20de%20identificacion%20bacterianajarconetti
 
jugar bingo en ingles
jugar bingo en inglesjugar bingo en ingles
jugar bingo en inglesLuci Paucar
 
Rc.604505 x00 - e-room stand-alone dpp
Rc.604505 x00 - e-room stand-alone dppRc.604505 x00 - e-room stand-alone dpp
Rc.604505 x00 - e-room stand-alone dppE-Controls
 
00. s.v. cámara caliente
00. s.v. cámara caliente00. s.v. cámara caliente
00. s.v. cámara calienteDelta Valencia
 
Atapuerca 1ºBachillerato CMC
Atapuerca 1ºBachillerato CMCAtapuerca 1ºBachillerato CMC
Atapuerca 1ºBachillerato CMCmcastillom04
 

Viewers also liked (15)

Invertir En Zonas Francas Ecuador
Invertir En Zonas Francas EcuadorInvertir En Zonas Francas Ecuador
Invertir En Zonas Francas Ecuador
 
Letter from chair of ltsc to seed
Letter from chair of ltsc to seedLetter from chair of ltsc to seed
Letter from chair of ltsc to seed
 
Summer School 2010 Reader public
Summer School 2010 Reader publicSummer School 2010 Reader public
Summer School 2010 Reader public
 
Ram deep
Ram deepRam deep
Ram deep
 
Azmat e waldain e rasool by allama hafiz muhammad younus madni
Azmat e waldain e rasool by allama hafiz muhammad younus madniAzmat e waldain e rasool by allama hafiz muhammad younus madni
Azmat e waldain e rasool by allama hafiz muhammad younus madni
 
Manual de Identidad visual corporativa
Manual de Identidad visual corporativaManual de Identidad visual corporativa
Manual de Identidad visual corporativa
 
Agenda del Comité de Innovación (Fundación EXECyL)
Agenda del Comité de Innovación (Fundación EXECyL)Agenda del Comité de Innovación (Fundación EXECyL)
Agenda del Comité de Innovación (Fundación EXECyL)
 
Set up, grow and successfully engage members of your panel final
Set up, grow and successfully engage members of your panel   finalSet up, grow and successfully engage members of your panel   final
Set up, grow and successfully engage members of your panel final
 
La publicidad es engañosa
La publicidad es engañosaLa publicidad es engañosa
La publicidad es engañosa
 
Zulia acella marco 3ero c 1
Zulia acella marco 3ero c 1Zulia acella marco 3ero c 1
Zulia acella marco 3ero c 1
 
Tecnicas%20de%20identificacion%20bacteriana
Tecnicas%20de%20identificacion%20bacterianaTecnicas%20de%20identificacion%20bacteriana
Tecnicas%20de%20identificacion%20bacteriana
 
jugar bingo en ingles
jugar bingo en inglesjugar bingo en ingles
jugar bingo en ingles
 
Rc.604505 x00 - e-room stand-alone dpp
Rc.604505 x00 - e-room stand-alone dppRc.604505 x00 - e-room stand-alone dpp
Rc.604505 x00 - e-room stand-alone dpp
 
00. s.v. cámara caliente
00. s.v. cámara caliente00. s.v. cámara caliente
00. s.v. cámara caliente
 
Atapuerca 1ºBachillerato CMC
Atapuerca 1ºBachillerato CMCAtapuerca 1ºBachillerato CMC
Atapuerca 1ºBachillerato CMC
 

Recently uploaded

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 

Recently uploaded (20)

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 

OS3 - DevDays Galway - Introduction To iPhone Development

  • 1. Walkthrough of Building an iPhone App Damian OSuilleabhain OS3
  • 3. Who Am I? • Software Developer with 15 Years Experience
  • 4. Who Am I? • Software Developer with 15 Years Experience • Worked with VB, Java, Classic ASP, JSP, C# and ASP.NET
  • 5. Who Am I? • Software Developer with 15 Years Experience • Worked with VB, Java, Classic ASP, JSP, C# and ASP.NET • Bought an iPhone in 2008 - A gateway drug!
  • 6. Who Am I? • Software Developer with 15 Years Experience • Worked with VB, Java, Classic ASP, JSP, C# and ASP.NET • Bought an iPhone in 2008 - A gateway drug! • Shortly thereafter Bought a MacBookPro, learned Objective C and Cocoa
  • 7. Who Am I? • Software Developer with 15 Years Experience • Worked with VB, Java, Classic ASP, JSP, C# and ASP.NET • Bought an iPhone in 2008 - A gateway drug! • Shortly thereafter Bought a MacBookPro, learned Objective C and Cocoa • Now working as a Full Time Freelance iPhone Developer
  • 8. Who Am I? • Software Developer with 15 Years Experience • Worked with VB, Java, Classic ASP, JSP, C# and ASP.NET • Bought an iPhone in 2008 - A gateway drug! • Shortly thereafter Bought a MacBookPro, learned Objective C and Cocoa • Now working as a Full Time Freelance iPhone Developer • 3 of My Own Apps on the App Store, 2 for Clients, More in development
  • 9. Who Am I? • Software Developer with 15 Years Experience • Worked with VB, Java, Classic ASP, JSP, C# and ASP.NET • Bought an iPhone in 2008 - A gateway drug! • Shortly thereafter Bought a MacBookPro, learned Objective C and Cocoa • Now working as a Full Time Freelance iPhone Developer • 3 of My Own Apps on the App Store, 2 for Clients, More in development • Interested in collaborations or projects
  • 10. Goal For This Session
  • 11. Goal For This Session • A Walkthrough of Building a Simple iPhone Application
  • 12. Goal For This Session • A Walkthrough of Building a Simple iPhone Application • Apply the Knowledge Gained in the Introduction to Objective-C
  • 13. Goal For This Session • A Walkthrough of Building a Simple iPhone Application • Apply the Knowledge Gained in the Introduction to Objective-C • Give you a Grounding in the Fundamentals of an iPhone Application
  • 14. What Will We Build?
  • 15. What Will We Build? • “Epic Tweets”
  • 16. What Will We Build? • “Epic Tweets” • A simple Twitter client
  • 17. What Will We Build? • “Epic Tweets” • A simple Twitter client • Shows the public timeline
  • 18. What Will We Build? • “Epic Tweets” • A simple Twitter client • Shows the public timeline • Demonstrates the principles discussed
  • 22. What Will Be Covered
  • 23. What Will Be Covered • Developer Tools
  • 24. What Will Be Covered • Developer Tools • Design Patterns
  • 25. What Will Be Covered • Developer Tools • Design Patterns • Project Structure  
  • 26. What Will Be Covered • Developer Tools • Design Patterns • Project Structure   • Visually Design Your Application's Interface
  • 27. What Will Be Covered • Developer Tools • Design Patterns • Project Structure   • Visually Design Your Application's Interface • Responding to User Input
  • 28. What Will Be Covered • Developer Tools • Design Patterns • Project Structure   • Visually Design Your Application's Interface • Responding to User Input • Connecting the Interface to Your Code
  • 29. What Will Be Covered • Developer Tools • Design Patterns • Project Structure   • Visually Design Your Application's Interface • Responding to User Input • Connecting the Interface to Your Code • What We Have Not Covered
  • 30. What Will Be Covered • Developer Tools • Design Patterns • Project Structure   • Visually Design Your Application's Interface • Responding to User Input • Connecting the Interface to Your Code • What We Have Not Covered • Questions
  • 33. Developer Tools • Xcode • Interface Builder
  • 34. Developer Tools • Xcode • Interface Builder • Simulator
  • 35. Developer Tools • Xcode • Interface Builder • Simulator • Instruments
  • 37. Developer Tools - Xcode • Xcode is an integrated development environment (IDE) that provides all of the tools you need to;
  • 38. Developer Tools - Xcode • Xcode is an integrated development environment (IDE) that provides all of the tools you need to; • create and manage your iPhone projects and source files,
  • 39. Developer Tools - Xcode • Xcode is an integrated development environment (IDE) that provides all of the tools you need to; • create and manage your iPhone projects and source files, • build your code into an executable, and
  • 40. Developer Tools - Xcode • Xcode is an integrated development environment (IDE) that provides all of the tools you need to; • create and manage your iPhone projects and source files, • build your code into an executable, and • run and debug your code either in iPhone simulator or on a device.
  • 41. Developer Tools - Interface Builder
  • 42. Developer Tools - Interface Builder • Interface Builder is the tool you use to assemble your application’s user interface visually.
  • 43. Developer Tools - Interface Builder • Interface Builder is the tool you use to assemble your application’s user interface visually. • Using Interface Builder, you assemble your application’s window by dragging and dropping preconfigured components onto it.
  • 44. Developer Tools - Simulator
  • 45. Developer Tools - Simulator • The iPhone simulation environment lets you build and run your iPhone application on your computer
  • 46. Developer Tools - Simulator • The iPhone simulation environment lets you build and run your iPhone application on your computer • Presents the iPhone user interface in a window on your computer
  • 47. Developer Tools - Simulator • The iPhone simulation environment lets you build and run your iPhone application on your computer • Presents the iPhone user interface in a window on your computer • Lets you simulate most of the actions a user performs on their device
  • 48. Developer Tools - Simulator • The iPhone simulation environment lets you build and run your iPhone application on your computer • Presents the iPhone user interface in a window on your computer • Lets you simulate most of the actions a user performs on their device • Important to note a simulator, not an emulator. Does not give a realistic view of memory or processor performance
  • 49. Developer Tools - Instruments
  • 50. Developer Tools - Instruments • The Instruments environment lets you analyse the performance of your iPhone applications while running in the simulator or on a device.
  • 51. Developer Tools - Instruments • The Instruments environment lets you analyse the performance of your iPhone applications while running in the simulator or on a device. • You can gather data about your application’s memory usage, disk activity, network activity, and graphics performance.
  • 54. Design Patterns • Delegation • Model View Controller
  • 55. Design Patterns • Delegation • Model View Controller • Target-Action
  • 56. Design Patterns - Delegation
  • 57. Design Patterns - Delegation • The delegation design pattern is a way of modifying complex objects without subclassing them.
  • 58. Design Patterns - Delegation • The delegation design pattern is a way of modifying complex objects without subclassing them. • Instead of subclassing, you use the complex object as is and put any custom code for modifying the behaviour of that object inside a separate object, which is referred to as the delegate object.
  • 59. Design Patterns - Delegation • The delegation design pattern is a way of modifying complex objects without subclassing them. • Instead of subclassing, you use the complex object as is and put any custom code for modifying the behaviour of that object inside a separate object, which is referred to as the delegate object. • At pre-defined times, the complex object then calls the methods of the delegate object to give it a chance to run its custom code.
  • 61. Design Patterns - MVC • The Model-View-Controller (MVC) design pattern is a way of dividing your code into independent functional areas.
  • 62. Design Patterns - MVC • The Model-View-Controller (MVC) design pattern is a way of dividing your code into independent functional areas. • The model portion defines your application’s underlying data engine and is responsible for maintaining the integrity of that data.
  • 63. Design Patterns - MVC • The Model-View-Controller (MVC) design pattern is a way of dividing your code into independent functional areas. • The model portion defines your application’s underlying data engine and is responsible for maintaining the integrity of that data. • The view portion defines the user interface for your application and has no explicit knowledge of the origin of data displayed in that interface.
  • 64. Design Patterns - MVC • The Model-View-Controller (MVC) design pattern is a way of dividing your code into independent functional areas. • The model portion defines your application’s underlying data engine and is responsible for maintaining the integrity of that data. • The view portion defines the user interface for your application and has no explicit knowledge of the origin of data displayed in that interface. • The controller portion acts as a bridge between the model and view and facilitates updates between them.
  • 65. Design Patterns - Target-Action
  • 66. Design Patterns - Target-Action • Controls use the target-action design pattern to notify your application of user interactions.
  • 67. Design Patterns - Target-Action • Controls use the target-action design pattern to notify your application of user interactions. • When the user interacts with a control in a predefined way (such as by tapping a button), the control sends a message (the action) to an object you specify (the target).
  • 68. Design Patterns - Target-Action • Controls use the target-action design pattern to notify your application of user interactions. • When the user interacts with a control in a predefined way (such as by tapping a button), the control sends a message (the action) to an object you specify (the target). • Upon receiving the action message, the target object can then respond in an appropriate manner (such as by updating application state in response to the button push).
  • 71. Project Structure • Class Files • Definitions (*.h)
  • 72. Project Structure • Class Files • Definitions (*.h) • Implementations (*.m)
  • 73. Project Structure • Class Files • Definitions (*.h) • Implementations (*.m) • Resources
  • 74. Project Structure • Class Files • Definitions (*.h) • Implementations (*.m) • Resources • Property Lists (*.plist)
  • 75. Project Structure • Class Files • Definitions (*.h) • Implementations (*.m) • Resources • Property Lists (*.plist) • Interface Files (*.xib)
  • 76. Project Structure • Class Files • Definitions (*.h) • Implementations (*.m) • Resources • Property Lists (*.plist) • Interface Files (*.xib) • Images, audio etc.
  • 78. The Code Demo • Visually Design Your Application's Interface
  • 79. The Code Demo • Visually Design Your Application's Interface • Connect the Interface With Your Code
  • 80. The Code Demo • Visually Design Your Application's Interface • Connect the Interface With Your Code • Responding To User Input
  • 81. What We Have Not Covered
  • 82. What We Have Not Covered • Non Technical
  • 83. What We Have Not Covered • Non Technical • Getting Set-up with Digital Certificates
  • 84. What We Have Not Covered • Non Technical • Getting Set-up with Digital Certificates • App Store Submission Process
  • 85. What We Have Not Covered • Non Technical • Getting Set-up with Digital Certificates • App Store Submission Process • Technical
  • 86. What We Have Not Covered • Non Technical • Getting Set-up with Digital Certificates • App Store Submission Process • Technical • Details of the XML Parser
  • 88. Questions • Any Questions on Anything We Have Covered?
  • 90. Contact Details • Email: damian@os3.ie
  • 91. Contact Details • Email: damian@os3.ie • Twitter: @DamianOS3
  • 92. Contact Details • Email: damian@os3.ie • Twitter: @DamianOS3 • Web: http://os3.ie
  • 93. Contact Details • Email: damian@os3.ie • Twitter: @DamianOS3 • Web: http://os3.ie • Happy to answer any questions you have on iPhone development
  • 94. Contact Details • Email: damian@os3.ie • Twitter: @DamianOS3 • Web: http://os3.ie • Happy to answer any questions you have on iPhone development • Even happier to discuss any projects you would like me to do!