Hello! iOS Development
()
About this ebook
Hello! iOS Development is a tutorial designed for novice iOS developers. Using the Hello! style of User Friendly cartoons and illustrations, this entertaining book will guide you step-by-step as you write your first apps for the iPhone and iPad and add them to the App Store.
About This Book
To create a successful iPhone or iPad app you need a great idea, serious commitment, and some programming know-how. If you supply the idea and the commitment, this entertaining and easy-to-read book will help you pick up the coding skills you need to bring your app to life.
Hello! iOS Development is a tutorial designed for new iOS developers. It builds on your existing programming knowledge to create apps for the iPhone and iPad using the Objective-C language and Apple's free Xcode tools. Characters from the User Friendly cartoon series guide you as you write your first apps and add them to the App Store.
Written for readers with beginning-level programming skills. No prior experience with iOS development is assumed.
Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.
What's Inside
- No iPhone or iPad development experience required
- Go from napkin sketch to finished app
- Publish your apps in the App Store
- Easy writing style with visual learning aids
About the Authors
Lou Franco is an iOS developer with over a decade of iOS experience.Eitan Mendelowitz teaches computing and the arts at Smith College.
Table of Contents
-
PART 1 HELLO! IPHONE
- Hello! iPhone
- Thinking like an iPhone developer
- Coding in Objective-C PART 2 IPHONE APPLICATIONS: STEP BY STEP
- Writing an app with multiple views
- Polishing your app
- Working with databases and table views
- Creating a photo-based application
- Moving, rotating, editing, and animating images
- Working with location and maps
- Accessing the internet PART 3 GOING FROM XCODE TO THE APP STORE
- Debugging and optimizing your application
- Building for the device and the App Store
Eitan Mendelowitz
Eitan Mendelowitz is an Assistant Professor of computing and the arts at Smith College. Working at the intersection of computer science and media art, he is currently developing mobile platforms to enable citizen science.
Related to Hello! iOS Development
Related ebooks
iOS in Practice Rating: 0 out of 5 stars0 ratingsBeginning Mobile Application Development in the Cloud Rating: 0 out of 5 stars0 ratingsAndroid Wearable Programming Rating: 0 out of 5 stars0 ratingsAndroid App Development For Dummies Rating: 0 out of 5 stars0 ratingsSwift 5 for Absolute Beginners: Learn to Develop Apps for iOS Rating: 0 out of 5 stars0 ratingsiPad Application Development For Dummies Rating: 3 out of 5 stars3/5IOS Programming For Beginners: The Simple Guide to Learning IOS Programming Fast! Rating: 0 out of 5 stars0 ratingsJob Ready Go Rating: 0 out of 5 stars0 ratingsPython Apps on Visual Studio Code: Develop apps and utilize the true potential of Visual Studio Code (English Edition) Rating: 0 out of 5 stars0 ratingsRootkits For Dummies Rating: 0 out of 5 stars0 ratingsCloud Computing Bible Rating: 4 out of 5 stars4/5Hello! Flex 4 Rating: 0 out of 5 stars0 ratingsMy Conversations With God AI Rating: 0 out of 5 stars0 ratingsLearning Underscore.js Rating: 0 out of 5 stars0 ratingsYour First Week With Node.js Rating: 0 out of 5 stars0 ratingsJava 9 with JShell Rating: 0 out of 5 stars0 ratingsExtending jQuery Rating: 0 out of 5 stars0 ratingsOffline First Web Development Rating: 0 out of 5 stars0 ratingsJavaScript Programming: 3 In 1 Security Design, Expressions And Web Development Rating: 0 out of 5 stars0 ratingsEthical Hacking and Computer Securities for Beginners Rating: 0 out of 5 stars0 ratingsRedmine Plugin Extension and Development Rating: 0 out of 5 stars0 ratingsUnderstanding Microelectronics: A Top-Down Approach Rating: 0 out of 5 stars0 ratingsSoftware architecture A Complete Guide - 2019 Edition Rating: 0 out of 5 stars0 ratingsLearning AWS Lumberyard Game Development Rating: 0 out of 5 stars0 ratingsProgressive web app A Clear and Concise Reference Rating: 0 out of 5 stars0 ratingsOpa Application Development Rating: 0 out of 5 stars0 ratingsLearning Firefox OS Application Development Rating: 0 out of 5 stars0 ratingsBuilding Android Games with Cocos2d-x Rating: 0 out of 5 stars0 ratingsClean Ruby: A Guide to Crafting Better Code for Rubyists Rating: 0 out of 5 stars0 ratings
Programming For You
Python: For Beginners A Crash Course Guide To Learn Python in 1 Week Rating: 4 out of 5 stars4/5HTML & CSS: Learn the Fundaments in 7 Days Rating: 4 out of 5 stars4/5Python Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5Java for Beginners: A Crash Course to Learn Java Programming in 1 Week Rating: 5 out of 5 stars5/5SQL: For Beginners: Your Guide To Easily Learn SQL Programming in 7 Days Rating: 5 out of 5 stars5/5Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5Python Machine Learning By Example Rating: 4 out of 5 stars4/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Learn SQL in 24 Hours Rating: 5 out of 5 stars5/5SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5Linux: Learn in 24 Hours Rating: 5 out of 5 stars5/5Pokemon Go: Guide + 20 Tips and Tricks You Must Read Hints, Tricks, Tips, Secrets, Android, iOS Rating: 5 out of 5 stars5/5Excel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5Grokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5SQL All-in-One For Dummies Rating: 3 out of 5 stars3/5Modern C++ for Absolute Beginners: A Friendly Introduction to C++ Programming Language and C++11 to C++20 Standards Rating: 0 out of 5 stars0 ratingsWeb Designer's Idea Book, Volume 4: Inspiration from the Best Web Design Trends, Themes and Styles Rating: 4 out of 5 stars4/5101 Amazing Nintendo NES Facts: Includes facts about the Famicom Rating: 4 out of 5 stars4/5OneNote: The Ultimate Guide on How to Use Microsoft OneNote for Getting Things Done Rating: 1 out of 5 stars1/5Learn PowerShell in a Month of Lunches, Fourth Edition: Covers Windows, Linux, and macOS Rating: 0 out of 5 stars0 ratings
Reviews for Hello! iOS Development
0 ratings0 reviews
Book preview
Hello! iOS Development - Eitan Mendelowitz
Copyright
For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact:
Special Sales Department
Manning Publications Co.
20 Baldwin Road
PO Box 261
Shelter Island, NY 11964
Email:
orders@manning.com
©2013 by Manning Publications Co. All rights reserved.
No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps.
User Friendly artwork, characters, and cartoon strips are used in this book by permission from UserFriendly.org. All rights reserved.
Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without elemental chlorine.
ISBN: 9781935182986
Printed in the United States of America
1 2 3 4 5 6 7 8 9 10 – MAL – 18 17 16 15 14 13
Dedication
To my mother, Josephine, who taught me what was truly important
L.F.
To my love Elanit, and to Amalya, who wants me to create a game about pirates
E.M.
Brief Table of Contents
Copyright
Brief Table of Contents
Table of Contents
Preface
Acknowledgments
About this book
About Hello! books
1. Hello! iPhone
Chapter 1. Hello! iPhone
Chapter 2. Thinking like an iPhone developer
Chapter 3. Coding in Objective-C
2. iPhone applications: step by step
Chapter 4. Writing an app with multiple views
Chapter 5. Polishing your app
Chapter 6. Working with databases and table views
Chapter 7. Creating a photo-based application
Chapter 8. Moving, rotating, editing, and animating images
Chapter 9. Working with location and maps
Chapter 10. Accessing the internet
3. Going from Xcode to the App Store
Chapter 11. Debugging and optimizing your application
Chapter 12. Building for the device and the App Store
Appendix A. Online resources for iOS app developers
Index
List of Figures
List of Tables
List of Listings
Table of Contents
Copyright
Brief Table of Contents
Table of Contents
Preface
Acknowledgments
About this book
About Hello! books
1. Hello! iPhone
Chapter 1. Hello! iPhone
Turning your Mac into an iPhone app factory
Installing the iPhone SDK
Running Xcode for the first time
Using application templates
Learning Xcode’s user interface
Looking at Xcode’s menus
Running Xcode’s iPhone simulator
Introducing Interface Builder
Making Hello, World!
Editing, building, and running
Chapter 2. Thinking like an iPhone developer
Using model-view-controller to dissect apps
Thinking about apps as models, views, and controllers
Test yourself on models, views, and controllers
Designing apps with objects
Establishing class relationships
Organizing classes in headers and modules
Avoiding crashes by understanding object lifetime
Applying object-oriented design
Preparing to code object-oriented designs
Chapter 3. Coding in Objective-C
Creating classes to match your designs
Declaring a message
Declaring a view-controller message for your views to send
Using properties to save data in objects
Connecting code to views in Interface Builder
Using the Connections Inspector in Interface Builder
Creating outlets and actions using the assistant
Defining the action message
2. iPhone applications: step by step
Chapter 4. Writing an app with multiple views
Designing a flashcard application
Creating classes to match your designs
Declaring a view-controller message for your views to send
Creating your other views and controllers
Creating the model classes
Implementing FCAnswerKey
The FCGame class
Connecting code to Interface Builder
Connecting the FCCardViewController view
Connecting the FCResultViewController view
Orchestrating your app with controllers
Handling card events in the FCCardViewController
Showing the result in the FCResultViewController
Reflecting on your progress
Chapter 5. Polishing your app
Setting up your application’s images
Replacing the default application icon
Making your application seem to load faster
Using images for buttons
Preparing a stretchable image
Using a stretchable image for a button
Adding animation
Sliding views instead of instantly switching
Flipping a view to show its back
Using custom animations
Making your apps look professional with graphic design
Chapter 6. Working with databases and table views
Keeping track of data in the FlashCards app
Deciding what to store
Sketching how the app will look
Designing new models
Introducing Core Data
Creating a data model
Adding entities and attributes
Using relationships
Generating data classes
Adding Core Data support to your app
Saving your game results
Fetching and viewing data
Viewing in a table
Navigating to related data
Changing your data model
Versioning your data model
Migrating between versions
Planning for what’s next
Chapter 7. Creating a photo-based application
Designing the application
Sketching Disguisey
Defining the behavior of your application
Designing your application’s models, views, and controllers
Creating an app with tab-based navigation
Renaming classes with the refactoring tool
Storyboarding your app in Interface Builder
Making images for the tabs
Making the face view
Making the disguise views
Changing tabs with code
Incorporating models
Coding DIDisguise and DIDisguiseElement
Working with photos
Getting images from the Photos application
Adding disguise elements to the photo
Wrapping it up, and what’s next
Chapter 8. Moving, rotating, editing, and animating images
Improving Disguisey
Sketching your new ideas
Updating models for the new features
Thinking about what you don’t know
Using animation to make disguises grow
Visualizing the animation
Coding the animation
Recognizing touch gestures
Picking the right gesture
Attaching gesture recognizers
Moving a disguise into place
Pinching the DIDisguise to resize it
Using a menu to remove parts of a disguise
Saving the disguised face
Displaying a Save menu
Overlaying one image onto another
Moving on from Disguisey
Chapter 9. Working with location and maps
Designing a map application
Sketching Parkinator
Looking at how it works
Designing the models, views, and controllers
Creating an app with a map
Using the Utility Application template
Adding the proper frameworks to your app
Placing an MkMapView on the main view
Showing the current location
Flipping the view to take a picture
Adding a UIImageView
Adding a camera button
Getting a photo
Showing the parking spot on the map
Using the flipped view’s image
Creating a map annotation model
Adding the pin to the map
Showing the pin
Making the data in Parkinator useful to others
Chapter 10. Accessing the internet
Overview of an internet-enabled Parkinator
Updating the main view
Tweeting an empty parking spot
Getting a list of open spaces
Using HTML for Help
Adding buttons on a toolbar
Creating a toolbar
Adding buttons for send, search, and help
Improving the toolbar layout
Using web views in your app
Making the Help view
Setting up the Help view
Making an HTML resource
Integrating with Twitter
Looking at iOS support for Twitter
Composing and sending a tweet
Searching Twitter
Parsing individual tweets
Displaying locations in the Map View
What’s next
3. Going from Xcode to the App Store
Chapter 11. Debugging and optimizing your application
Debugging without tools
Intentionally introducing a bug
Logging messages
Using assertions
Popping up dialogs
Debugging with Xcode
Setting breakpoints
Stepping through code
Watching variables
Breaking when something happens
Speeding up your app
Profiling your code
Finding bottlenecks
Optimizing memory usage
What’s next
Chapter 12. Building for the device and the App Store
Running your app on a device
Getting developer certificates
Provisioning your device
Installing your program
Distributing to testers who don’t have Xcode
Submitting your app to the App Store
Making sure everything is in order
Creating your App Store application record
Submitting your app to the App Store
Congratulations!
Appendix A. Online resources for iOS app developers
Frameworks and libraries
Design resources
App sketching
Simulating, deployment, and other tools
Index
List of Figures
List of Tables
List of Listings
Preface
We came to iOS development from two different paths. Lou is a commercial software developer with a traditional CS background and degree, and Eitan has a mixed design and technology background and a career in academia. Lou is from NYC, and Eitan is from LA. We both decided to settle in a small town in Western Massachusetts, and although we live less than a mile from each other, we never met.
Troy Mott, a development editor at Manning, contacted Lou, an iOS developer and blogger, about Manning’s Hello series. The whimsical take on programming education and Troy’s persuasion convinced Lou that it would be a worthwhile project. After Lou got started, though, he became convinced he needed a coauthor, and he set out to find one.
Late last year, a chance mention of this coauthor search to a mutual friend led to an introduction to Eitan. An hour or so after sharing a coffee at a local cafe, we knew we wanted to write this book together.
So, a coauthor search that began over the web and with global reach via social networking ended the old-fashioned way—over brunch and face-to-face networking. And, in a time where virtual collaboration is the norm, we were lucky to be able to meet when we needed to.
We hope you find that our different backgrounds each bring something to this book. Between us, we have decades of programming, designing, writing, and teaching experience, and we needed it all to fit the vast domain of iOS development into something a little gentler than most other books—and, we hope, a lot more fun.
Acknowledgments
We would like to acknowledge all the folks at Manning who expertly guided us through the development and production processes: Troy Mott, Sebastian Stirling, Susanna Kline, Tiffany Taylor, Toma Mulligan, Mary Piergies, Marija Tudor, and Janet Vail, and many others who worked on our book and whose names we do not know.
Special thanks to our technical proofreader, James Hatheway, who made sure the technical content in our manuscript was up to par and who checked the code examples shortly before the book went into production.
And we would like to acknowledge our peer reviewers, who took the time to read our manuscript at various stages of its development and who provided invaluable feedback: Al Scherer, Christopher Haupt, Craig Smith, David Barkol, David Strong, Frank Ableson, Lester Lobo, Nikolaos Kaintantzis, Paul Stusiak, Peter Friese, Premkumar Rajendran, Ray Booysen, Robert McGovern, Sanchet Dighe, Santosh Shanbhag, and Sarah Forst.
Finally, thanks to J.D. Illiad
Fraser of User Friendly for letting Manning use the User Friendly cartoons in the Hello! series and for allowing us to put our own words in the characters’ mouths in this book.
Lou Franco
I would like to thank my wife, Jennifer Rippel, whose seriousness and self-motivation are daily inspirations to me. Thanks also to my mom, who did so much to help me find my life’s work, from touch-typing lessons to getting me the TRS-80 color computer I learned to program on. Also, thanks to my extended family for their warmth and lifelong support. Thanks to my colleagues at Atalasoft and the rest of Kofax, who make my work day rewarding and productive. And finally, a very grateful thanks to Dominique Thiebaut for introducing me to Eitan, without whom this book would not exist.
Eitan Mendelowitz
I would like to thank my colleagues at Smith College who encouraged me to work on this project; and my Mobile Computing students, who were both patient and helpful as I was developing material for this book. Most of all, I am grateful for the fantastic iOS developer community, whose creativity and experimentation are a continual source of inspiration.
About this book
How this book is organized
Part 1 of this book is your introduction to the world of iOS development. By the end of this section, you’ll know your way around Xcode, its GUI building tools, and enough of Objective-C and object-oriented development to build an app:
Chapter 1 introduces Xcode, the main tool you’ll be using to develop iOS apps. We show you how to write Hello World!, the first app that programmers generally learn to write.
Chapter 2 explains the model-view-controller pattern used to organize iOS apps.
Chapter 3 introduces Objective-C so you can add interactivity to your apps. We’ll take Hello World! and show you how to connect up buttons, labels, and text fields to make it more useful.
Part 2 takes you through the main features of iOS as you build three apps. Each chapter will show you all the steps, from sketching a GUI, through object-oriented design, and, finally, how to code the final result:
Chapter 4 starts with a simple flashcard app that teaches US state capitals. By the end of the chapter, you’ll know how to use outlets and actions to react to the user and simple navigation to get from screen to screen. You can adapt this app for any subject.
Chapter 5 shows how to polish the look of your app with imagery, custom buttons, and animations.
Chapter 6 takes the flashcard app and adds a local database using iOS’s Core Data framework. You’ll also learn how to show database information in table views.
Chapter 7 starts with a new app, Disguisey, that lets you put mustaches, hats, wigs, and other disguise elements onto any photo. In this chapter, we’ll cover tabbed interfaces and accessing the device’s camera or photo album.
Chapter 8 adds gesture recognition to Disguisey. You’ll learn how to recognize long press, pinch, and pan gestures to interact with your face photo and disguise elements.
Chapter 9 explores iOS’s location and mapping frameworks in a new app, Parkinator. You’ll learn how to show a map and put a new pin on it to remember where you parked your car.
Chapter 10 adds networking capabilities to Parkinator. You’ll learn how to show web pages and how to search and post to Twitter.
Part 3 shows you that once you’ve built an app, there’s a lot more to learn. This part guides you around some of the tools that make sure your app doesn’t have bugs and explains how to get the app into the App Store:
Chapter 11 examines Xcode’s debugger and instruments. You’ll purposely add problems to your completed app and then find them using Xcode’s tools.
Chapter 12 shows you everything you need to know to get your app into the App Store.
Finally, the appendix provides a list of external resources that will help you make a great app.
What you’ll need
In order to follow along with this book, you’ll need to have access to a Mac with the latest Xcode on it (we’ll show you how to get Xcode). This means you must have at least Lion. Most of what we do works on slightly older versions, but the screenshots may not match exactly.
If you want to put any of these apps on your iOS device, you’ll need an iOS developer account, which costs $99 per year. None of the apps in this book require that—you can run all the code in the Simulator. There are parts, like taking a picture with the camera, that we show you how to fake if you aren’t running on a device. If you want to make a real app, you’ll need to join the developer program.
Code conventions and downloads
This book contains all the source code for three iOS apps, built up over a few chapters each. Code samples are annotated so you can easily follow along. Code in listings and in text is set in a monospaced font like this to distinguish it from ordinary text.
If you want to download the source, it’s available on GitHub at http://github.com/loufranco/hello-ios-source. The code uses the MIT open source license so you can grab whatever you need for your projects or use any of the example apps as a starting point for your own app. You can also download a zip file with the source code for this book from the publisher’s website at www.manning.com/HelloiOSDevelopment.
Author Online
Purchase of Hello! IOS Development includes free access to a private web forum run by Manning Publications where you can make comments about the book, ask technical questions, and receive help from the authors and from other users. To access the forum and subscribe to it, point your web browser to www.manning.com/HelloiOSDevelopment This page provides information on how to get on the forum once you’re registered, what kind of help is available, and the rules of conduct on the forum.
Manning’s commitment to our readers is to provide a venue where a meaningful dialogue between individual readers and between readers and the authors can take place. It’s not a commitment to any specific amount of participation on the part of the authors whose contribution to the book’s forum remains voluntary (and unpaid). We suggest you try asking the authors some challenging questions, lest their interest stray!
The Author Online forum and the archives of previous discussions will be accessible from the publisher’s website as long as the book is in print.
About the authors
LOU FRANCO runs Atalasoft imaging and PDF toolkit development for Kofax and has been a mobile app developer for over a decade. He lives in Northampton, MA.
EITAN MENDELOWITZ is an assistant professor of computing and the arts at Smith College, where he teaches courses situated at the intersection of computer science and media art. These include Seminar on Mobile and Locative Computing,
which uses iOS as its development platform. Eitan is currently developing mobile platforms to enable citizen science.
About Hello! books
At Manning, we think it should be just as much fun to learn new tools as it is to use them. And we know that fun learning gets better results. Our Hello! Series demonstrates how to learn a new technology without getting bogged down in too many details. In each book, User Friendly cartoon characters offer commentary and humorous asides, as the books moves quickly from Hello World! into practical techniques. Along the way, readers build a unique hands-on application that leverages the skills learned in the book.
Our Hello! books offer short, lighthearted introductions to new topics, with the authors and cartoon characters acting as your guides.
Part 1. Hello! iPhone
This part of the book will help you get started being an iPhone application developer. By the time you’re finished with this part, you’ll have done the following:
Seen the Apple Developer website and tools
Set up your machine for development
Learned about the basic concepts required to create applications
Created two simple applications
Chapter 1 is focused on getting your machine ready for development. You’ll learn to navigate the Apple Developer website, download and install the Apple tools that you need to create apps, and take a tour through the two most important tools, Xcode and Interface Builder. At the end of the chapter, you’ll have created a Hello World! application.
Chapter 2 will help you start thinking about iPhone apps like a developer. You’ll begin by learning the basics of the model-view-controller model of GUI development and object-oriented design. Then we’ll move on to the topic of object lifetime, and you’ll apply what you’ve learned.
Then, in chapter 3, we’ll move on to the syntax of Objective-C, the programming language you use to write apps. We’ll end by showing you how to use these new concepts in Xcode and Interface Builder to create a slightly more complex application.
Chapter 1. Hello! iPhone
This chapter covers
The Apple Developer website
Installing the iPhone SDK
Introduction to Xcode and Interface Builder
Hello, World!
The iPhone is a fun and