$2,895.00
Duration | Five Days |
Description
Duration: 5 Days
Description
This five-day course explores the language, tools, and libraries required to build “native” iPhone/iPad applications with iOS 9. Developers can choose from three different starting points depending upon previous iOS experience (from no experience to minimal view controller experience). This course starts at the beginning of the development process, identifying what is needed to obtain the iOS SDK and continuing with a thorough exploration of Objective-C, the native programming language for iOS. After all of the necessary foundations are established, the iOS 9 SDK and its related development tools are introduced, providing a detailed examination of views, controls, view controllers, and their event based lifecycle.
Throughout the course, concepts are reinforced through “hands-on” lab exercises. The culmination of these exercises result in an iPhone / iPad app that is intended to be used by attendees of a software development seminar (including a “master-detail” schedule of sessions, attendee notes, map / directions to the venue location, and display of a live website).
Learning Objectives
- Build iPhone and iPad applications with the iOS 9 SDK
- Master the underlying programming language, Objective-C
- Discover the tools and APIs used to build dynamic user interfaces
- Delve into the methods in which user input is collected
- Improve code quality through Unit Testing
- Explore advanced programming concepts including Persistence and Concurrency
Audience
Experienced object oriented software developers who are new to, or have minimal experience with, Objective-C and the iOS SDK.
Prerequisites
Strong development experience in any Object Oriented programming language. Students should feel very comfortable with concepts such as Inheritance and Polymorphism.
Course Outline
Module 1 – Introduction to iOS Development
- Introducing iOS
- Apple Developer Membership
- iOS SDK
- Xcode
- Interface Builder
- The iOS Simulator
- Instruments
- Documentation
- iOS APIs
- Getting Started
Module 2 – Objective-C: Basic Data Types
- Introduction and Brief History of Objective-C
- The Main Function
- NSString Literal & NSLog
- Primitive Data Types
- Structs and Enumerated Data Types
- NS_ENUM & NS_OPTIONS
Module 3 – Objective-C: Working with Objects
- Foundation Classes
- Object Creation: Overview and Messaging
- Object Creation: Alloc / Init
- Object Creation: Factory Methods
- More on Strings
Module 4 – Objective-C: Collections
- Arrays, Dictionaries, and Sets
- Class Clusters & Introspection
- Fast Enumeration
- Wrappers: NSNumber
Module 5 – Objective-C: Custom Classes
- Custom Class Overview
- Class Header File
- Class Implementation File
- Self and Super
- Automatic Reference Counting (ARC)
- Properties
- Overriding NSObject Methods
- Access Control
Module 6 – iOS Basics
- Architecture of an App (The Main Run Loop)
- Creating a Project & Target Settings
- UIApplication and the App Delegate
- UIKit Framework: Views and Controls
- Storyboards and Scenes
- Build Actions (Run, Test, Profile, Analyze, Archive)
- Frameworks & Cocoapods
Module 7 – View Controllers: Definition, Lifecycle, and Navigation
- View Controller Overview
- Life Cycle Methods
- Connecting a Scene to a View Controller
- Segues
- Segue Methods
- Unwind Segues
- Programmatic Segues
- IBOutlet and IBOutletCollection
- The Target-Action Pattern & IBAction
- Programmatic View Controllers
Module 8 – Adaptive Layout
- Storyboard Assistant Preview
- Device Rotation
- Auto Layout
- Size Classes
- NSLayoutConstraint
- NSLayoutAnchor
- Visual Format Language
Module 9 – View Controllers: Common Controllers
- Navigation Controllers
- Tab Bar Controllers
- Objective-C: Protocols & Delegates
- Table View Controllers: Prototype
- Deleting and Moving Rows
- Troubleshooting Tips
- Table View Controllers: Static
Module 10 – Collection Views
- Collection View Overview
- Data Source and Delegate Protocols
- Flow Layout
- Custom Layout Options
- Programmatic Instantiation
Module 11 – Animation, Images, and Common Views
- Blocks
- UIView Animation
- Image Views & the Asset Catalog
- Scroll Views
- Web Views
- Map Views
Module 12 – Handling User Input
- Text Fields & Views, Keyboards, and “First Responders”
- UIAlertController
- Gestures (Pinch, Pan, Swipe, etc.)
Module 13 – Data Persistence
- User Defaults
- File System
- Object Archiving
- SQLite
Module 14 – Notifications
- Key-Value Observing (KVO)
- NSNotification
Module 15 – Concurrency
- Threads and @synchronized
- Dispatch Queues and Grand Central Dispatch (GCD)
- GCD and a RESTful Web Service (NSData/JSON)
Module 16 – Testing
- XCTest Framework
- Navigators & Assistant Editor Categories
- Functional Tests
- Performance Tests
- Asynchronous Tests
Demo – Device Provisioning & Distribution
- Development Build: Deploying to Your Own Device
- Overview of the Provisioning Portal
- Development and Distribution Certificates
- Approved Devices
- App IDs
- Provisioning Profiles
- Targets, Configurations, and Schemes
- Ad Hoc Build: Archiving and Distributing
- Public Build: iTunes App Store
Appendix A – Core Data
- Persistence Options in iOS
- Core Data Architecture
- Schema Design in Xcode
- Generating Model Classes
- Basic Stack Configuration
- CRUD Operations
Appendix B – Additional Objective-C Topics
- Wrappers: NSValue
- Control Structures: Conditonals
- Control Structures: Loops
- Categories
- The “Address Of” Operator
Appendix C – Additional iOS Topics
- Touch ID & Passcode
- Settings App (User Defaults)
- UILocalNotifications
- Push Notifications
- Operations & NSOperationQueue
- User Interface Tests