Course Outline
Foundational Programming Concepts
- Object-Oriented Programming (OOP) principles
- Understanding what software is
- Organized versus disorganized programming structures
- The importance and purpose of software
Why Choose Apple and iOS?
- The appeal of iOS
- History of Apple
- Evolution of iOS
- Apple’s Unique Selling Proposition (USP)
- What Apple is renowned for
- Distinction between UX and UI
Development Environment Setup
- Requirements for the development environment
- Xcode and the iOS Software Development Kit (SDK)
- Apple Developer Registration process
- Common reasons for application rejections
- Adhering to Human Interface Guidelines
Xcode and iOS Projects
- Overview of Xcode
- Creating an iOS project
- Running applications on simulators and real devices
Swift Fundamentals
- The transition from Objective-C to Swift
- Key features and advantages of Swift
- Variables
- Constants
- Hello World in Swift
- Creating UILabels programmatically
Image Animation and Loading
- Using UIImageView
- Basic animations for UIView and UIImageView
- Utilizing Playgrounds
- Lazy loading of images
- Lazy properties
Swift Classes and View Controllers
- Creating Swift classes
- Memory management principles
- Strong and weak references
- Initializers and deinitializers in Swift
- Protocols, Hashable, and Printable
- Inheritance
- Creating View Controllers
- Implementing View Controllers
- Utilizing Playgrounds
Life Cycle and Responder Chain
- View Life Cycle
- Application Life Cycle
- Responder Chain: touchBegan, touchMoved, and other methods
- Using NSTimer
Adaptive Layout Strategies
- Storyboards versus XIB files
- Support for multiple devices
- Icon sizing and device orientation handling
- Building User Interfaces using code
- Outlets and Actions
- Protocols: Required and Optional
- Memory management
Notifications and Localization
- Push Notifications: Silent and Standard
- Localization techniques
Overview of Objective-C
- Properties
- Categories
- Function syntax
- Property attributes: readWrite and readOnly
Social Media Integration in iOS
- Facebook Integration
- Twitter Integration
- Mail Integration
- Integrating third-party apps
iOS UI Components
- UITextField
- UITextView
- UISegmentedControl
- UISlider
- UISwitch
- UIProgressBar
- UIPageControl
- UIStepper
- UIScrollView
- UIPickerView
- UIActionSheet
- UIWebView
- SearchBar
Additional Basic Components in iOS
- Groups and folders
- Closures
- Tuples
- URL Session
- URLRequest
- UIAlertView
- UIActivityIndicatorView
- Access modifiers: internal, public, private
- Guard statements
- Optionals
Threading in iOS
- Grand Central Dispatch (GCD)
- NSOperationQueue
- Main Thread and Background Threads
User Interaction Handling
- Buttons and handlers
- Pan gesture recognition
- Tap gesture recognition
- Custom Table Views
- Basics of Collection View
Multi-Screen Applications
- Table Navigation
- Tabbed Applications
- Navigation Controllers
- Presenting controllers and various presentation and push animations
Location Services
- Position and Altitude
- Compass Direction
Device Access and Storage Management
- File Storage
- Music Library Access
- CoreData and SQLite in iOS
- Key Chain
- User Defaults
- Property Lists (PLists)
- NSSearchDomain
- Directory concepts and app security within NSSearchDomain
Speech Framework
- Speech to Text conversion
- Text to Speech synthesis
Multipeer Connectivity Framework
- Sending data between devices
- Connecting multiple devices
Networking
- Network Access
- Serializing and Deserializing JSON
- REST Web Services
- Basics of XML Parsing
Uploading an App to the App Store
- Using iTunes Connect
- Developer Portal and Provisioning Profiles
- Deployment and distribution strategies
- Running apps on real devices
- Uploading the app to the App Store
Practical Application Examples
- Dots Game: https://itunes.apple.com/app/the-dots-free/id850315430
- Notes App: Notes App
- Contacts App
- Developing an app that fetches data from an open API, displays it in a Table View with details, includes a Search Bar for search functionality, and uses Core Data for offline data storage
- Creating a personal application based on your own idea
Requirements
You must have prior experience with at least one programming language.
Testimonials (1)
He's an experienced trainer with a real life experience in the topic he was teaching. That led the course to cover the most important topics which interests any developer working in the field, and small details would be easily overseen if he was not working in this platform. Moreover, he was giving the course using the latest versions of is and Swift (10 \ 3) and that is a huge advantage to be adapting such new technology in short time.