Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iOS Development

iOS Development

A slide I presented yesterday on Offline Class of Jasakom - one of a biggest hacker community in Indonesia. This slide is quite similar with my previous slide (http://speakerdeck.com/u/andri/p/introduction-to-ios-development) but with more and updated content.

A5734ece6688d816ec1ecf5e854be6c8?s=128

Andri Yadi

April 15, 2012
Tweet

Transcript

  1. Andri Yadi President, ID-ObjC | CEO, DyCode @andri_yadi | a

    (at) dycode (dot) com http://andriyadi.me Introduction to iOS Development O ine Class Jasakomer (Special iOS), April 15, 2012
  2. about me

  3. The rst & largest iOS & OSX developer community in

    Indonesia ID-ObjectiveC President
  4. 4 years in a row

  5. 2011 - now

  6. start a company & code for food 9 years in

    mobile development
  7. a movie freak

  8. iOS Devices

  9. None
  10. 21 Start developing iOS apps Today!

  11. http://developer.apple.com/ios

  12. Xcode iOS Simulator iOS Developer Library

  13. Required Stu s

  14. None
  15. Latest iOS SDK

  16. 27 Installing Tools

  17. Optional Stu s

  18. Actual iOS devices

  19. For debugging to device & deployment to AppStore

  20. Some development stuffs

  21. Objective-C C + OOP ≠ C++

  22. A superset of C: • Syntactical convention for de ning

    classes & method • Syntax for method invocation • Syntax for declaring & synthesizing properties • Static & dynamic typing • Blocks • Extension: protocol & categories Objective-C Advantages: • Dynamic typing: enables to determine the class of an object at runtime • Dynamic binding: allows to determine the method to call at runtime instead of at compile-time • Dynamic loading: allows to add modules of code & other resources at runtime.
  23. Classes & Objects

  24. Methods & Messaging [aMutableArray insertObject:anObject atIndex:0]; [[self aMutableArray] insertObject:anObject atIndex:0];

    [self.aMutableArray insertObject:anObject atIndex:0];
  25. Blocks int result = myBlock(4);

  26. Protocols & Categories @interface NowPlayingController : UIViewController<UIScrollViewDelegate, ProfileViewDelegate> { }

    @end Protocol == Interface in other OOP language (Java, C#) @protocol ProfileViewDelegate - (void)profileView:(ProfileView *)profileView doSignInWith: (AuthProviderType)signInType sender:(id)sender; @optional - (void)profileView:(ProfileView *)profileView doSignOut:(id)sender; @end Category, enables to extend a class without subclassing it @interface NSDate (Additions) + (NSDate *)dateFromTimeString:(NSString*)timeString; + (NSDate *)dateWithJSONString:(NSString *)json; - (NSDate *)dateByAddingDays:(NSInteger)numDays; - (NSDate *)dateByAddingHours:(NSInteger)numHours; @end
  27. More details: http://bit.ly/AF8EiJ

  28. Design Pattern

  29. Model-View-Controller design pattern

  30. Model-View-Controller design pattern NowPlayingController NowPlayingView NowPlaying

  31. None
  32. Reference counting No garbage collector support (yet) Autorelease Pool Memory

    Management
  33. iOS frameworks

  34. None
  35. Enable apps to store user documents and key value data

    Storage Push changes to all user’s computers and devices
  36. Easily integrate Tweet Sheet Access system-wide Twitter account from within

    app Wrap OAuth request & response
  37. Memory management becomes compiler’s job Manually enabled in Xcode It’s

    NOT a garbage collector! Automatic Reference Counting (ARC) No need to deal with retain & release by yourself
  38. Layout the app’s work ow & design user interfaces Can

    be loaded dynamically Storyboard Specify transitions & segues between views
  39. Image processing framework nally comes to iOS Advanced features: red-eye

    reduction, face recognition CoreImage Provides built-in lters: color e ect, distortions, transitions
  40. Take advantage of the latest hardware Apple-developed OpenGL ES extensions

    GLKit: new high-level framework
  41. Cocoa Touch Foundation, UIKit, Multi-Touch Gestures

  42. Graphics Core Graphics, Core Animation, Core Image, Core Text, OpenGL

    ES
  43. CoreData Database, Object-Relational Mapping, optimized for mobile - > 1

    million objects store
  44. Audio & Video Media player, Core Audio & OpenAL, iPod

    library, HTTP Live Streaming
  45. Networking Bonjour, Peer to peer, WebKit framework, BSD socket

  46. Core Location & MapKit

  47. Multitasking New kind of multitasking

  48. External display support

  49. AirPrint Wireless printing to AirPrint-enabled printers. Hack available

  50. Push & Local Notification

  51. Game Center Social gaming platform

  52. iAd Integrated advertising platform

  53. In-App Purchase Payment inside applications

  54. Human Interface Design

  55. GUI Elements http://www.teehanlax.com/downloads/iOS_5_GUI_iPhone4S.psd.zip

  56. Storyboard

  57. The app will look like these

  58. App Store Submission

  59. Finally, on the App Store

  60. you app can use this badge!

  61. Everything is here: http://developer.apple.com/ios

  62. https://developer.apple.com/library/ios/#referencelibrary/ GettingStarted/RoadMapiOS/Introduction/Introduction.html

  63. Let’s see some code

  64. DYCODE IS HIRING!

  65. If you think you’re awesome, either mobile developer guru or

    still early learner, send your awesome CV to: hrd@dycode.com
  66. None