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

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
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
 
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
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 

Último (20)

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
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
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
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
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 

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!