2.8 KiB
2.8 KiB
iOS and Cross-Platform Development
| Android | iOS | |
|---|---|---|
| Market Share | 82% | 13.9% |
| Programming Lang | Java Kotlin |
Objective-C Swift (2014) |
| IDE | Eclipse Android Studio |
Xcode |
| OS | Windows/Mac/Linux | Only on Mac! |
| Distribution Process | Release can take hours | Release can take weeks |
| Fees | $24 one-off | $99 per year |
iOS
- Based heavily on Mac OS X
- Closed source
- Tools, deployment, app ecosystem controlled by Apple
- Apps can only be installed from the App Store
- Cryptographically signed
- Apple runs App Store
- Approves all apps available from it
iOS Apps
- Written in Objective-C & Swift
- An extension of C to add support for objects
- Using the Cocoa Touch UI framework
- Can also use C/C++ libraries
- Compiles to native code via LLVM (not interpreted (JIT) as on Android)
Structure of an App
Model View Controller Design Pattern
UI Application Object: manages event loop & high-level app behaviour
Application Delegate: Handles app initialisation and state transitions
Data Objects: Store data for the app (images, database, etc.)
Document: Manage data objects
View Controller: Manages the presentation of the app on the screen, loads views, shows views, rotates views, etc.
UI Window: Coordinates the presentation of one or more views on a screen
Views & UI objects: Draw content, buttons, etc.
iOS Lifecycle
- Apps are sandboxed; inter-app communication is used to pass data
- Only one application in the foreground / visible at once
- A main loop processes events for the application
- Xcode creates the main function
- App can be in a number of significant states
- Active: foreground
- Inactive: foreground but interrupted
- Background: same as services in Android
- Suspended: main loop no longer running; remains in memory but is potentially killed by the operating system
State Transitions
App Store
- Pre-moderation
- Apple checks all applications in advance manually
- Versus Android: publish and then revoke
- A long list of guidelines as to what is appropriate
Cross-platform
Xamarin
- Developed by Microsoft
xamarin.Formsfor native UI code




