Course Outline
Foundational Programming Concepts
- Object-Oriented Programming (OOP) principles
- Definition and role of software
- Organized versus unorganized data structures in programming
- The importance of software
Apple and the iOS Ecosystem
- Rationale for choosing iOS
- Apple's corporate history
- Evolution of iOS
- Apple's Unique Selling Proposition (USP)
- Key areas of Apple's expertise
- User Experience (UX) versus User Interface (UI)
Development Environment Setup
- Hardware and software requirements for development
- Xcode and the iOS Software Development Kit (SDK)
- Registration as an Apple Developer
- Common causes for application rejection
- Apple Human Interface Guidelines
Xcode iOS Project Management
- Xcode interface overview
- Step-by-step iOS project creation
- Testing on simulators and physical devices
Swift Fundamentals
- Transitioning from Objective-C to Swift
- Key features and advantages of Swift
- Variables
- Constants
- Writing a 'Hello World' program in Swift
- Creating UILabels programmatically
Image Animation and Loading Techniques
- Utilizing UIImageView
- Basic animations for UIView and UIImageView
- Effective use of Playgrounds
- Image lazy loading strategies
- Implementing lazy properties
Swift Classes and Interface Scenes
- Defining Swift classes
- Principles of memory management
- Distinguishing between strong and weak references
- Constructors and destructors in Swift
- Protocols, Hashable, and Printable conformance
- Inheritance mechanisms
- Designing Interface scenes
- Implementing View Controllers
- Practical Playground exercises
Application Life Cycle and Responder Chain
- View life cycle management
- Application life cycle events
- Handling the responder chain, including touchBegan and touchMoved methods
- Utilizing NSTimer
Adaptive Layout Strategies
- Comparing Storyboards versus XIB files
- Supporting multiple device types
- Icon sizing and handling device orientation
- Constructing user interfaces programmatically
- Using Outlets and Actions
- Understanding required and optional protocols
- Advanced memory management techniques
Notifications and Localization
- Implementing Push Notifications, including silent pushes
- Localizing applications for different regions
Overview of Objective-C
- Using properties
- Extending classes with categories
- Objective-C function syntax
- Property attributes: readWrite versus readOnly
Social Media Integration in iOS:
- Integrating Facebook
- Integrating Twitter
- Implementing Mail functionality
- Interfacing with third-party applications
iOS UI Components:
- UITextField
- UITextView
- UISegmentControl
- UISlider
- UISwitch
- UIProgressBar
- UIPageControl
- UIStepper
- UIScrollView
- UIPicker
- UIActionSheet
- UIWebView
- SearchBar
Additional Basic iOS Components and Utilities:
- Managing groups and folders
- Closures
- Tuples
- URLSession
- URLRequest
- UIAlertView
- UIActivityIndicatorView
- Access control: internal, public, and private
- Guard statements
- Handling Optionals
Threading in iOS:
- Grand Central Dispatch (GCD)
- NSOperationQueue
- Differentiating between Main Thread and Background Threads
User Interaction Handling
- Buttons and event handlers
- Pan gesture recognition
- Tap gesture recognition
- Customizing Table Views
- Fundamentals of Collection Views
Developing Multi-Screen Applications
- Table-based navigation
- Tabbed application structures
- Implementing Navigation Controllers
- Presentation techniques and animation effects for controller transitions
Location Services Implementation
- Acquiring position and altitude data
- Determining compass direction
Device Access and Data Storage
- File system storage
- Accessing the music library
- Using CoreData and SQLite in iOS
- Secure key storage with Keychain
- Utilizing User Defaults
- Working with Property Lists (PLists)
- NSSearchPath for document directories
- Understanding directory structures and app security via NSSearchPath
Speech Framework Capabilities
- Converting speech to text
- Converting text to speech
Multipeer Connectivity Framework
- Transmitting data between devices
- Establishing connections among multiple devices
Networking Fundamentals
- Establishing network access
- Serializing and deserializing JSON data
- Implementing REST Web Services
- Basics of XML parsing
App Store Distribution Process
- Navigating iTunes Connect
- Managing provisioning profiles in the Developer Portal
- Deployment and distribution strategies
- Testing applications on real devices
- Uploading applications to the App Store
Practical Application Projects
- Dots Game: https://itunes.apple.com/app/the-dots-free/id850315430
- Notes App: Notes App
- Contacts App
- Data Fetching Project: Retrieve data from an open API, populate a table view, display details, implement a search bar, and utilize CoreData for offline storage
- Capstone Project: Develop an application based on your own concept
Requirements
Participants 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.