Your SlideShare is downloading. ×
0
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
iOS (7) Workshop
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

iOS (7) Workshop

595

Published on

Presentation slides for a introductory workshop on iOS.

Presentation slides for a introductory workshop on iOS.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
595
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
39
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. iOS (7) Workshop
  • 2. Model-View-Controller View Model Controller UpdateUser Action NotifyUpdate
  • 3. ModelView Controller
  • 4. V M C Views • Defines a rectangular region on the screen and handles the drawing and touch events in that region. • Every application has at least one view (the window) for presenting it’s content. • A view can also act as a parent for other views and coordinate the placement and sizing of those views. • Examples: Buttons, Navigation Bars, Alerts, Table View Cells, etc...
  • 5. View Controllers • Each view controller organizes and controls a view. • A view controller owns it’s view. It takes care of all user actions, animations, updating the view, etc... • Just like Views, Controllers can act as parents of other Controllers. V M C
  • 6. Navigation Controller • A Controller that manages the navigation of hierarchical content. • You can push/pop view controllers into/from the Navigation Controller. • Each time you add a view controller to the hierarchy the Navigation Controller becomes it’s parent. V M C
  • 7. Collection View Controller • Contains and manages it’s collection view (each controller has a root view, remember?). • Usually you subclass it to add your custom behavior. • By default it is the delegate and datasource of it’s collection view. V M C
  • 8. Delegation • Or acting on behalf/at the request of another object. • The delegating object sends a message to it’s delegate telling it some event is about to happen and asks for some response. • Delegation is a means for injecting specific behavior in the workings of a framework class — without having to subclass it. V M C
  • 9. Delegate
  • 10. User taps Delegate
  • 11. User taps shouldSelectItemAtIndexPath: Delegate
  • 12. User taps shouldSelectItemAtIndexPath: Delegate YES
  • 13. Data Source • It’s like a delegate except that, instead of being delegated control of the UI, it is delegated control of the data. • Responsible for managing the memory of the model objects they give to the delegating view. V M C
  • 14. Data Source
  • 15. View starts loading Data Source
  • 16. View starts loading numberOfSectionsInCollectionView: Data Source
  • 17. View starts loading numberOfSectionsInCollectionView: Data Source1
  • 18. View starts loading Data Source numberOfItemsInSection:0
  • 19. View starts loading Data Source numberOfItemsInSection:0 7
  • 20. View starts loading Data Source cellForItemAtIndexPath:
  • 21. View starts loading Data Source cellForItemAtIndexPath: Cell View
  • 22. View starts loading Data Source cellForItemAtIndexPath: Cell View
  • 23. Application Delegate • A custom object created for you at app launch time. • It’s primary job is to handle state transitions within the app. • Example: application:didFinishLaunching:
  • 24. Storyboards V M C • Big canvas where you lay out your app screens and transitions • Trees of view controllers in a serialized form • Storyboards = Scenes (VCs) + Segues (transitions) • Good for a conceptual overview of the app • Bad for apps with lots of VCs or iPad apps (HUGE views...) • Limitations: Storyboards < XIBs < Code
  • 25. Objective-C • 1983 • Stepstone -> NeXT -> Apple • ObjC = C + Smalltalk • Object-oriented, reflective • OSX (Cocoa), iOS (Cocoa Touch)
  • 26. Basics Objective-C Java char b = 0; byte b = 0; int i = 0; int i = 0; float f = 0; float f = 0; double d = 0; double d = 0; BOOL b = YES; // NO boolean b = true; // false char c = ‘c’; char c = ‘c’; NSObject *o = [[NSObject alloc] init]; Object o = new Object(); NSString *s = @”string”; String s = “string”;
  • 27. Basics Objective-C Java #import “MyType.h” import me.app.MyType; - (void)method; public void method() { ... } + (void)method; static public void method() { ... } const, (...readonly...) final static static package nil null
  • 28. Basics • (Almost) all C/C++-stuff (if, for, while,...) • Pointers (*) to objects. • Pointer = reference to another value in memory [instance message:argument1 otherParameter:argument2];
  • 29. Stuff0x3DE2FE Basics
  • 30. Stuff0x3DE2FE Basics
  • 31. Stuff0x3DE2FE Basics
  • 32. Object* Stuff0x3DE2FE Basics
  • 33. .h & .m • ObjC type = interface + implementation • .h: header file, type contract to the outside world @implementation MyType - (void)myMessage:(int)myParam { // Do stuff... } @end @interface MyType - (void)myMessage:(int)myParam; @end • .m: messages (old stuff) file, implementation (actual code)
  • 34. Messages • Message: just a fancy name for a method call • Interpreted in runtime: objects decide if they respond to messages • self = this object (can message self) • super = base (parent) object (can message super)
  • 35. Properties • Syntactic sugar on instance variables • Clang generates setters and getters automatically (it was not always like this) • Atomic by default! (use nonatomic to remove lock) @property (nonatomic, copy) NSString *myProperty;
  • 36. • Protocol: just a fancy name for an interface (defines an expected behaviour) • Messages and properties can be mandatory or optional • Used in the delegate pattern: “will ask somebody (the delegate) something” Protocols
  • 37. @interface MyType : NSObject<MyProtocol> @end @protocol MyProtocol - (void)myMandatoryMessage; @optional - (void)myOptionalMessage; @end Protocols
  • 38. Categories • Category: allows to extend a class without inheritance • Add new messages without recompile! • Warning: existing messages can be “replaced”. Category messages take precedence. • Similar to .NETs extension methods
  • 39. Categories @implementation UIColor (MyColors) + (UIColor*)myAwesomeColor { return ...; } + (UIColor*)blackColor { // I told ya... return [UIColor redColor]; } @end @interface UIColor (MyColors) + (UIColor*)myAwesomeColor; + (UIColor*)blackColor; // Oops! @end
  • 40. Collections • Store “things” • Jumble! (can mix Strings with Numbers with Astrocreeps...) • Arrays, Dictionary, Sets • Immutable: once set can’t change (NSArray, NSDictionary, NSSet) • Mutable: can change (NSMutableArray, NSMutableDictionary, NSMutableSet) • Sort, filter, query, enumerate, map & other cool stuff
  • 41. Memory • Instantiate new object: MyType *myType = [[MyType alloc] init]; • Reference count: keep track of the number of instances. If 0 deallocate object • ARC does retain/release for you automatically. • References: strong (retain), weak, copy (new immutable object)
  • 42. Blocks • Closures: fancy name for functions that can be passed around like data • Key to lots of ObjC features: collection enumeration, Grand Central Dispatch (threads), animations • Explicit or inline definition • Context variable must be marked with __block if changed within block
  • 43. self.square.backgroundColor = [UIColor redColor]; ... - (void)animate:(id)sender { [UIView animateWithDuration:3.0 animations:^{ self.square.backgroundColor = [UIColor greenColor]; }]; } Blocks
  • 44. Demo github.com/fbernardo/fct_ios_workshop/releases
  • 45. Thank you @fbbernardo @PragmaPilot

×