Course Outline
Programming Fundamentals
- Object-Oriented Programming (OOP) concepts
- Understanding software
- Organized vs. Unorganized approaches in programming
- The importance of software
Apple and iOS Overview
- Rationale for choosing iOS
- Apple's history
- iOS history
- Apple's Unique Selling Proposition (USP)
- What Apple is renowned for
- User Experience (UX) vs. User Interface (UI)
Development Environment Setup
- Requirements for the development environment
- Xcode and the iOS Software Development Kit (SDK)
- Apple Developer program registration
- Common reasons for application rejection
- Human Interface Guidelines
Xcode iOS Projects
- Xcode overview
- Creating an iOS project
- Testing on simulators and real devices
Swift Fundamentals
- The shift from Objective-C to Swift
- Key features of Swift
- Variables
- Constants
- Writing 'Hello World' in Swift
- Creating a UILabel programmatically
Image Animation and Loading
- Understanding UIImageView
- Basic animations for UIView and UIImageView
- Utilizing Playgrounds
- Lazy loading of images
- Lazy properties
Swift Classes and Scenes
- Creating Swift classes
- Memory management techniques
- Strong and weak references
- Constructors and deinitializers in Swift
- Protocols, Hashable, and Printable
- Inheritance
- Creating scenes
- Implementing View Controllers
- Using Playgrounds
Life Cycle and Responder Chain
- View life cycle
- Application life cycle
- Responder Chain methods: touchBegan, touchMoved, etc.
- Using NSTimer
Adaptive Layout
- Storyboards vs. XIB files
- Supporting multiple devices
- Icon sizing and device orientation
- Building user interfaces programmatically
- Outlets and Actions
- Protocols: Required and optional
- Memory management
Notifications and Localization
- Push Notifications: Silent and standard
- Localization strategies
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 applications
UI Components in iOS
- UITextField
- UITextView
- UISegmentedControl
- UISlider
- UISwitch
- UIProgressView
- UIPageControl
- UIStepper
- UIScrollView
- UIPickerView
- UIActionSheet
- UIWebView
- SearchBar
Additional iOS Basics and Components
- Groups and folders
- Closures
- Tuples
- URLSession
- URLRequest
- UIAlertView
- UIActivityIndicatorView
- Access control: internal, public, private
- Guard statements
- Optionals
Threading in iOS
- Grand Central Dispatch (GCD)
- NSOperationQueue
- Main Thread and Background Threads
User Interaction
- Buttons and handlers
- Pan gesture recognition
- Tap gesture recognition
- Custom Table Views
- Introduction to Collection Views
Multi-Screen Applications
- Table Navigation
- Tabbed applications
- Navigation Controllers
- Presenting controllers and applying various animations during presentation and pushing
Location Services
- Position and Altitude
- Compass Direction
Device Access and Storage
- File storage solutions
- Music library access
- CoreData and SQLite in iOS
- Keychain access
- User Defaults
- Property List (PLists)
- NSSearchPathForDirectoriesInDomains
- Directory concepts and app security with NSSearchPathForDirectoriesInDomains
Speech Framework
- Speech-to-text functionality
- Text-to-speech functionality
Multi-peer Framework
- Transmitting data between devices
- Connecting multiple devices
Networking
- Network access
- Serializing and Deserializing JSON
- REST Web Services
- Basics of XML Parsing
Uploading Apps to the App Store
- Introducing iTunes Connect
- Developer Portal and provisioning profiles
- Deployment and distribution methods
- Testing applications 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
- Fetching data from an open API server to populate a table view, displaying details, implementing a search bar, and saving data offline using Core Data
- Developing an application based on your own concept
Requirements
Prior experience with at least one programming language is required.
Testimonials (2)
The way of transferring knowledge and the knowledge of the trainer.
Jakub Rekas - Bitcomp Sp. z o.o.
Course - Machine Learning on iOS
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.