Affordable iPhone Mobile Apps Development Services: Affordable iPhone Mobile A pps D e v elopme n t Services

Introduction to iPhone Development: Introduction to iPhone Development Task Contents Application Runtime Core Architecture and Life-cycles What’s in a bundle? The resources in an app bundle Customizing Behavior How does it launch? IPC? Relation with Tools How do we get the app on the phone? 4 1 2 3

Application Life-Cycle: Application Life-Cycle How your application lives and dies User taps icon on home screen main() UIApplicationMain() E v e n t Loop System requests termination Application actually terminates

Main and UI Application: M ain and UI Application main() Just like any other main functions (C, C++, etc) Creates top-level autorelease pool Starts application with UIApplicationMain UIApplicationMain() Creates instance of UIApplication that is responsible for actually launching your application (loading main Nib file). Takes four parameters: argc , argv , ignore other two.

Application Delegate: Application Delegate Monitors high level or critical actions in application Launch Terminate Memory warnings Conforms to Objective-C protocol (all methods optional)

The Main Nib File: The Main Nib File Remember: archive of objects. One of these objects is your main window. For now, think of the Main Nib file as your interface, as the year progresses, we’ll show how to load additional Nib files. Interface elements not in your main Nib file: Status bar Application instance (we’ll talk about proxy objects in three weeks)

Life-Cycle Review: Life-Cycle Review User touches icon on home screen System calls main() main() calls UIApplicationMain() UIApplicationMain() creates instance of UIApplication UIApplication instance loads main Nib file, sets up based on application properties UIApplication instance goes into run loop, waiting for and forwarding events to interface elements (instances of UIResponder) User taps home button or does another termination activity UIApplication instance tells your delegate that the application is terminating UIApplicationMain() exits, main() exits, process exits

Sandboxing: Sandboxing iPhone OS does not give your application free reign like it does on OS X. Your application only has access to a certain part of the file system, something like: /ApplicationRoot/ApplicationID This is a security device preventing a single application from destroying your phone or iPod Touch.

Virtual Memory: Virtual Memory Virtual memory on the phone is quite interesting. It exists, but not really. It exists in that it gives your application the full virtual 32-bit address space. However, it does not write volatile pages to disk (b/c flash memory only has so many write cycles). A pplication Did Receive Memory Warning : in your delegate

Application Contents: Application Contents File Description MyApp The actual application executable code Icon.png Your application’s home screen icon MainWindow.nib The main Nib file containing your interface Info.plist Property list with information about your application myimage.png A non-localized image or other resource Settings.bundle Preference pane for the Settings app Icon-Settings.png Icon for settings application Default.png The image to show while your app is launching en.lproj, fr.lprog, … Localized folders (ignore these for now) Other items… …that you should ignore for now.

My App: M y A p p The compiled, executable code for your application. Actual name is the name of your application bundle minus the “.app” extension. If your application bundle doesn’t have this, you don’t actually have an application, you just have a folder of stuff.

Development to Device: Development to Device Write code Build for device Install Sign

Introduction to iPhone Development: Introduction to iPhone Development Task Contents Application Runtime Core Architecture and Life-cycles What’s in a bundle? The resources in an app bundle Customizing Behavior How does it launch? IPC? Relation with Tools How do we get the app on the phone? 4 1 2 3