Overview of iOS
iOS App Development Basics, the second course in the iOS App Development with Swift specialization, expands your programming skills and applies them to authentic app development projects. The topics covered in this course include XCode basics, Core iOS and Cocoa Touch frameworks, simple user interface creation, MVC Architecture and much more. With a focus on using Apple’s components to access sensors like camera, microphone and GPS, by the end of this course you will be able to create a basic App according to specified parameters and guidelines.
Duration
5 Days
Prerequisite for iOS
- Must Have Good Understanding of Programming Concepts
- Must Have Good Understanding of OOPS Concepts
- Basic Knowledge of OS X usage and navigation would be desired, not mandatory
Course Outline for iOS
Day 1
Introduction to iOS Development Fundaments
Introduction to SWIFT Development Fundaments
- Start Up
-
- Understanding the Development Environment
- Installing the Tools
- Components of the SDK
- Understanding the XCode and IB interface
- Understanding the Playground
- Understanding the advantages and Limitations of Simulator
- Swift Programming Language
-
- Swift Basics
-
- The language basics
- Constants and Variables
- Type Annotations
- Data Types
- Type-Safety and Inference
- Conversions
- Tuples
- Optionals
-
- Basic Operators
- Strings and Characters
- Collection Types
-
- Arrays
- Dictionaries
- Assignment and Copy behavior
- Mutation in Collections
-
- Control Flow
-
- Conditional Statements
- Iteration Statements
- Value bindings
- Control Transfer
-
- Functions
-
- Defining Functions
- Function Parameters
- Functions with Multiple Return values
- External Parameters
- In-Out Parameters
- Function Types
- Function Types are Parameters
- Nested Functions
-
- Closures
-
- Closure Expressions
- Closure Context
- Trailing Closures
- Closures as Reference types
-
- Enumerations
-
- Enumeration Basics
- Associated Values
- Raw Values
-
- Optional Chaining
- Type Casting
-
- Class Hierarchy for Type Casting
- Type Checking
- Down Casting
- Object Casting
Day 2
- Classes and Structures
- Defining class and structure instances
- Properties
- Stored Properties
- Computer Properties
- Property Observers
- Type Properties
- Initializers
- Methods
- Type Methods
- Instance Methods
- Subscripts
- Inheritance
- Defining Base Class
- Subclassing
- Overriding
- Preventing Overrides
- Initialization
- Designated Initializer
- Custom Initialization
- Default Initialization
- Initializer Chaining and Safety
- Deinitialization
- Automatic Reference Counting
- How ARC Works
- Strong Reference Cycles
- Resolving Strong Reference Cycles
- Extensions
- Types
- Methods
- Initializers
- Subscripts
- Nested Types
- Protocols
-
- Property Requirements
- Method requirements
- Mutating Requirements
- Protocols as Types
- Delegation
- Protocol Conformation with Extension
- Protocol Adaption
- Collections of Protocol
- Protocol Inheritance
- Optional Protocols
- Generics
-
- Why use Generics
- Functions
- Type parameters
- Types
- Constraints
- Associated Types
- Where Clauses
User Interface
Day 3
- UI basic
-
- Using iPhone Project Templates
- The Units of Measurement
- The iOS Hello World Boilerplate Dissection
- Understanding the App Startup process
- The iOS Architecture
- Retina v/s non-Retina UI considerations
- The Developer License
- Understanding Views and Windows
- Creating User Interface
- Basic GUI Components
-
- UITextField, UISlider, UISegementControl, UIStepper, UIButton etc
-
- Actions, Outlets and Events
- Handling Basic Interactions
- The Human Interface Guidelines
- Understanding Delegation
- Exercise – Create a Settings Controller that allows to Switch Font Sizes, Change RGB color background, Allow Text Events
- Understanding UITableView
-
- Understanding UINavigationController
- Creating a Simple Table View
- Reusing TableViewCells
- Customizing a TableView
- Grouping Data in Tables
- Selecting and Navigation in TableViews
- Modal Views
-
- Alerting a User
- Customization AlertViews
- Capturing User response
- TextField Alerts and Keyboard Styles
- Implementing ActionSheets
-
- UICollectionView
-
- Using a UICollectionView
- DataSource and Delegates
- Custom UICollectionViewCells
- Reusing Collection Cells
- Creating Custom Controls by Subclassing
-
- Creating Controls Programmatically
- Adding Interactivity to Controls
- Subclassing UIControls
- Creating Custom Controls
- Advanced UITableViews
-
- Adding Custom controls to TableView
- Loading custom cells from Nib
- Adding Interaction to TableView Controls
- Lazy Loading Table Cells
- iPad Considerations
-
- Split-View Controller and Popovers
Day 4
- Multi-View Applications
-
- Container and Content Views
- Introduction to Multi-View Applications
- The MVC Architecture. Why and How to use MVC.
- Subclassing Controllers
- Creating a Utility Application and Creating Protocols
- Implementing Different Animation for View Transitions
- The Application Project Structure
-
- Creating and Accessing your own Bundles
- A Start Up Project using Different Controllers. ###
-
- Creating a Multi-View Application from Scratch
- Creating Scenes and Segues
- Adding Controllers
- Passing Data Across Scenes
-
- Understanding Master-detail Application
- Universal Applications
This project forms the base line for our Further Topics.
-
- This App, to start up, deals with a few concepts like:
- Creating a Project with an MVC Architecture
- Passing Data across controllers
-
- Forward data passing
- Creating your own Protocol to pass data backwards.
- Comparing Your Protocol with UITableViewDataSource Protocol`
- Different styles of Segues
- Initiating a Segue
-
- Further, with Data Persistence, we will get the data from an SQLite store to populate the App
- Further on, we shall consume a web-service, save the data into the SQLite data, and that data will populate the App
- Debugging and Troubleshooting
-
- Using NSLog for Troubleshooting and understanding App Flow
- Using the Debugger
- Creating breakpoints and Navigating through
- Checking and Changing the values of Variables at Breakpoints
- Troubleshooting our Sample App
- Basic Data Handling
-
- Understanding the Controller States in Life Cycle
- Understanding Application Document Structure
- Understanding the Product Folder Structure
- The Application Default Folders and File Manager
- Capturing Files form Bundles
- Storing and retrieving data from Files
- Storing and Retrieving data from Plists
- Data Persistence
-
- Limitations of iOS Data Access
- Creating Preference / Settings Bundles
- Using User Defaults to store user defaults
- Creating the Settings bundle
- Updating the UI for Settings Bundle
- Using settings bundle values in the App
- The Notification Message Pattern
- Database storage
- Sqlite
- Using the SQlite Library
- Creating a SQLite database
- Accessing SQLite database
- Mapping datatypes with UI elements and Creating a Model Class
- Getting SQLite data into our Sample App
Day 5
- Web and Networking
-
- Reading data from Network
- HTTP requests
- XML Parsing
- JSON Serialization and Deserialization
- Synchronous and asynchronous Downloads
- Getting the Data from Web service and Populating our Sample Project
- Multi-threading & Performance
-
- Block & Categories
- Threads and Alternatives
- Synchronous and Asynchronous APIs
- The Grand Central Dispatch
- The Operations Queue
- Enabling Background Apps
- Handling the App States and Application Guidelines
- Handling Device Features
-
- Identifying Device Capabilities
- Using Accelerometer
- Capturing Accelerometer Data
- Auto-Layouts and Constraints
- Gesture Recognition, Taps and Touches
- Adding Gestures to UI Elements
- Multi-touch terminology
- Detecting Swipes, Touches and Taps
- Using UIApplicationDelegate and UIResponder
- Understanding the Responder chain
- Wrap Up
- Localization
- Instruments – Error Detection and Tuning
- Running the Analyzer
- Using Instruments for Memory leaks, Time Profiling
- Detecting Zombies and Leaks.
- Setting up the App Properties
- Registering as Developer
- Understanding Provisioning
- Procuring Provisioning Files
- Packaging the Application for iTunes, Distribution