SlideShare una empresa de 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!

Más contenido relacionado

Destacado

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
 

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

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
 
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
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
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
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
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
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
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
 
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
 
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
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 

Último (20)

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
 
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
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
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
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
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
 
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
 
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
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 

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!