Wednesday, November 17, 2010

iOS Application Design

iOS Application Design

 


Starting the Design Process for Your Application

Designing an iOS application requires at least a basic understanding of a few key principles:
  • The UIKit framework provides the core infrastructure for managing and running your application. Application customization comes primarily through interactions with the classes of this framework.
  • The system frameworks use well-defined design patterns. Understanding those design patterns (which are documented in Cocoa Fundamentals Guide) is essential for interacting with the system frameworks and is often useful for implementing your own code, too.
  • Most other frameworks provide services or additional features that you can incorporate as needed. Some frameworks (such as Foundation and Core Graphics) are included in all Xcode projects, but most others must be added to your project explicitly. For a list of available technologies and the documents that show you how to use them, see iOS Technology Overview.
The focus of this document is on the core infrastructure provided by UIKit and how it runs your application. Understanding this infrastructure is crucial to creating applications that work well within the system. This document also addresses the things you must do outside of UIKit, such as in your Xcode project, to make your application run smoothly. For example, this document discusses the configuration metadata that needs to accompany every application.
A good starting point for learning about application development is to learn a little about the environment in which applications must run. You can find this information in “The Application Runtime Environment.” After that, you should proceed to “The Core Application Design” to learn about the core objects and behaviors (such as multitasking) found in an iOS application.

Supporting Common Application Behaviors

There are a handful of common behaviors that iOS applications can implement. These features are independent of the type of the application you are creating and are more closely related to the design goals you have for that application. For example, both games and productivity applications can be launched into a landscape orientation. And all applications need to be responsive to low-memory warnings coming from the system.
Deciding which behaviors you want to support is important to consider when designing your application. The amount of work required to implement each behavior is usually not large but such a feature might inspire you to rework part of your design to take better advantage of it.

Meeting the App Store and System Requirements

Configuration of your application’s information property list file (Info.plist) and bundle are essential steps of the development process. The Info.plist file contains crucial information about your application’s configuration and supported features. The system relies heavily on this file to obtain information about your application and the location of key resource files needed to launch it. Also, bundles provide the fundamental structure for organizing your application’s resources and localized content. Knowing where to put things is important to building a running application.
To learn about the structure of iOS applications, and the steps you must take to configure them, read “Build-Time Configuration Details.”

Tuning Performance for the Underlying Device

In iOS, good application performance is particularly important and can mean the difference between success and failure. If your application is slow or consumes resources that prevent other applications from running smoothly, users are unlikely to want to buy it. And because resources such as memory are more constrained on iOS-based devices, it is imperative that you factor in system constraints to your design.
Power usage is a particularly important area of performance tuning when it comes to iOS applications. Many features require the system to enable specific bits of hardware. Disabling features that you are not using at the moment gives the system the opportunity to power down the associated hardware and extend battery life.
For information about techniques for improving performance and managing power usage, see “Tuning for Performance and Responsiveness.”

See Also

After reading this document, you should also consult the following documents for information about how to implement different parts of your application.

 


 

No comments:

Post a Comment