Audience
Novice developers who want to build iOS native applications with Swift and the Xcode development tools should attend this class.
Prerequisites
Attendees should have:
- Experience with an object-oriented language such as Java, C/C++ or Python
- Familiarity with using OS X and iOS devices
Duration
5 days. Hands on.
Course Objectives
This course is about building iOS native applications with Swift and the Xcode development tools. Attendees will:
- Develop a thorough understanding of the Swift programming language, with an introduction to the underlying Objective-C
- Understand iOS application architecture
- Get comfortable working with the Apple development tools
- Design user interfaces using storyboards and understand the generated code
- Develop good habits for building performant, testable and maintainable apps for iOS devices
Course Content
Introduction
iOS Devices and the iOS Operating System
Swift 3, Objective-C, Xcode and related tools
The Apple Developer Program and typical development workflows
Swift Fundamentals
Introduction to Swift structure, syntax and semantics
Using Playgrounds
Declaring constants and variables with identifiers
Basic data types and optionals
Conditionals and loops
Declaring, scoping and using functions
Function Types
Closures and Extensions
Access control and type casting
User defined types
Collections
Understanding Automatic Reference Counting (ARC)
Computed properties, property observers and inheritance
Initialization and deinitilization
Unit Testing and Performance Metrics
XCTest Framework
Xcode testing and monitoring tools
iOS Design Architecture
Model View Controller (MVC) architecture as applied to iOS
Creating view controllers
Using storyboards with outlets and actions
Scenes and segues
Moving data between controllers
Navigation controllers
Layout and Auto Layout
Autoresize masks
Implementing and altering layout constraints
Resolving conflicting constraints
Content hugging and compression resistance
Variants
Protocols
Optional members
Loose coupling
Table Views
Styles
Data Sources and delegates
Error Handling
Representing and throwing errors
Handling errors
Cleanup actions
Guards
Networking
URL loading system
Understanding NSURLSession
Creating and managing asynchronous downloads
Strings and images
Dealing with JSON for data transfer
Multithreading
Local Storage
User defaults
Sandboxing
Working with files
Archiving
SQLite
Core data
Multitouch Taps and Gestures
Touches and Taps
Notification methods
Gesture recognizers
Drawing and Animation Overview
Core Graphics
Points, coordinates and pixels
Graphics Context
Core Animation and transformations
UIView core animation blocks
App states
App States
Best Practices
States and Lifecycle
Moving to the background
Memory usage
Background execution
Notifications
Local notifications
Push notifications
Running on Physical Devices and Emulators
Project Configuration
Launching an App
Performance and Power Optimization
Measuring Performance
Responsiveness
Memory Usage
Networking
iOS Security Overview
iOS security features and architecture
Sandboxing and app interactions
Securing data storage
Application Security
iOS permissions
Writing secure iOS applications
Protection techniques and their circumvention
Input validation
Improper use of security features
Time and state problems
Deployment
Icons and Launch Images
Archiving for production
Distribution