Course outline
Day 1
iOS platform overview
Operating system, window and event system, application life cycle
Your first RubyMotion app
Creating an app, project structure, defining views and methods, setting targets and actions, running the app, icons, images
RubyMotion and Objective-C
RubyMotion stack, object model, memory management, messages, initializers, accessors, properties, differences between Ruby and Objective-C and RubyMotion
RubyMotion and C
Using structures, calling functions, using pointers
Introduction to Cocoa
Model-View-Controller, frameworks, UIKit and controls, Foundation
Day 2
Delegation pattern
Delegation, using frameworks, CoreLocation, CLLocationManager, compiler errors
Introduction to views
UIView, subclassing UIView, the drawRect: method, drawing and resizing, UIScrollView, zooming, gestures, retain cycles
Maps
MapKit framework, MapView, MKAnnotation, tagging
Testing
Bacon, spec files, spec helpers, context, device events, finding views, UIAutomation
Designing UI
Manual vs Interface Builder, XIB files, libraries and DSLs, using Interface Builder
Day 3
View controllers
Using view controllers, responsabilities, life cycle, UITabVarViewController, tab bar items, assigning views
Table views
Data sources, reading Apple documentation, the UITableViewDataSource protocol, UITableView, UITableViewController, UITableViewCell, editing table views, deleting, moving and inserting rows
Advanced table views
Subclassing table views, layout, custom cells
Navigation controllers
UINavigationBar, file's owner, UINavigationController, appearing and disappearing views
Notifications
Notification center, UIDevice notifications, autorotation
Day 4
Camera access
Displaying images and UIImageView, UIImagePickerController, UIPopoverController, caching images
Application sandbox and memory warnings
File system structure, reading and writing to disk, handling low-memory warnings, simulating memory warnings
Events
Touch events, tracking touch events, the responder chain, instruments
Animations
CoreAnimation, CALayer and views, implicit animations
Advanced animations
CABasicAnimation, timing functions, CAKeyFrameAnimation, CATransaction
Day 5
Settings
Settings bundle, NSUserDefaults, reading and writing defaults
Accessing Web services
Fetching data, NSURLConnection, parsing XML and JSON, Rails integration, UIWebView
Data persistence
The model, archiving, SQLite, CoreData, model definition, NSManagedObject, NSManagedObjectContext
Using 3rd-party libraries
Vendoring projects, Bundler, BubbleWrap, CocoaPods, Cocos2d
Concurrency
GCD (libdispatch), queues, NSOperation, blocks