SlideShare uma empresa Scribd logo
1 de 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!

Mais conteúdo relacionado

Destaque

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
 

Destaque (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
 

Último

Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 

Último (20)

Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 

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!