The iPhone SDK was announced officially on March 6, 2008, the first beta release was on July 11, 2008 which demanded a firmware update for all iPhone and iPod users. The SDK continued to develop with time until the Beta3 update to the 2.1 SDK was released on August 8, 2008.
Here is a small timeline.
| Date of release | SDK Version release | iPhone OS Version |
| March 6, 2008 | First beta | 1.2b1 |
| March 27, 2008 | Beta 2 | 2.0b2 |
| April 8, 2008 | Beta 3 | 2.0b3 |
| April 23, 2008 | Beta 4 | 2.0b4 |
| May 6, 2008 | Beta 5 | 2.0b5 |
| May 29, 2008 | Beta 6 | 2.0b6 |
| June 9, 2008 | Beta 7 | 2.0b7 |
| June 26, 2008 | Beta 8 | 2.0b8 |
| July 24, 2008 | First Beta for OS v2.0 | 2.1 |
| July 30, 2008 | Beta 2 update v2.0 | 2.1 |
| August 8, 2008 | Beta 3 update v2.0 | 2.1 |
The iPhone SDK package contents
The SDK is broken down to the following:
Cocoa Touch
The Cocoa Touch layer is one of the most important layers in iPhone OS. It comprises the UIKit and Foundation frameworks (UIKit.framework and Foundation.framework), which provide the basic tools and infrastructure you need to implement graphical, event-driven applications in iPhone OS.
It also includes several other frameworks that provide key services for accessing device features, such as the user’s contacts.
This framework is used to implement the core set of features.
- Application management
- Graphics and windowing support
- Event-handling support
- User interface management
- Objects representing the standard system views and controls
- Support for text and web content
- Accelerometer data
- The built-in camera (where present)
- The user’s photo library
- Device-specific information
Media
The graphics and media technologies in iPhone OS are geared toward creating the best multimedia experience available on a mobile device. More importantly, these technologies were designed to make it easy for you to build good-looking and -sounding applications quickly. The high-level frameworks in iPhone OS make it easy to create advanced graphics and animations quickly, while the low-level frameworks provide you with access to the tools you need to do things exactly the way you want.
- OpenAL
- Audio mixing and recording
- Video playback
- Image file formats
- Quatrz
- Core Animation
- OpenGL ES
Core Services
The Core Services layer provides the fundamental system services that all applications use. Even if you do not use these technologies directly, every other technology in the system is built on top of them.
- Networking
- Embedded SQLite database
- GeoLocation
- Threads
OS X Kernel
The Core OS layer encompasses the kernel environment, drivers, and basic interfaces of the operating system. The kernel itself is based on Mach and is responsible for every aspect of the operating system. It manages the virtual memory system, threads, file system, network, and inter-process communication.
The drivers at this layer also provide the interface between the available hardware and the system frameworks that vend hardware features. Access to kernel and drivers is restricted to a limited set of system frameworks and applications. iPhone OS provides a set of interfaces for accessing many low-level features of the operating system.
Your application accesses these features through the LibSystem library. The interfaces are C-based and provide support for the following:
- Threading (POSIX threads)
- Networking (BSD sockets)
- File-system access
- Standard I/O
- Bonjour and DNS services
- Locale information
- Memory allocation
Develop your first iPhone application:
Things you need before going any further:
- A “MAC OS X” platform of version 10.5.3 or later. You can get an original MAC box or you can simply get one of the hacked versions of the MAC OS, for more information click here.
- The iPhone SDK “Software Development Kit” you can get one from the iPhone developer program home page, or simply click here.
- Xcode, the IDE “Integrated Development Environment” used to develop applications and software for MAC based platforms. Although one of Xcode’s goals is to reduce the time you spend writing code, you still devote a considerable part of your development in the text editor. To that end, the text and source editor provide many features with the aim of making your source-code editing a productive and efficient endeavor. Code folding, code completion, Edit All in Scope, Refactoring, and other features allow you to focus your attention on the right areas and to use your time as efficiently as possible. It’s packed with the iPhone installer, so no need to worry about it.
- Interface builder, this application lets you design compelling user interfaces graphically. Your work is saved as nib files that your application loads at runtime. This means that you what you design is exactly what users of your application see; you work with the actual controls that iPhone OS places on the users’ screens. It also means that you spend less effort codifying the user-interface–related aspects of your application in source code. It’s also supplied in the SDK package.
Other developing applications you may use:
- Debugger, as you start testing your application, you may need to step through your code to the cause of unexpected behavior. Xcode’s debugging facilities provide the usual debugging features, such as breakpoints, viewing variables, and so forth. But Xcode provides these and other debugging features right in the text editor. That is, you can make a change in your code, add a breakpoint, start your application, and perform most debugging tasks in the same window.
- Instruments, as you near the end of the development process, you must ensure your application uses the resources of the device on which it’s running as efficiently as possible, so that battery power is not wasted and your application does not gather system resources unnecessarily. “Instruments” shows your application’s resource usage, including memory, CPU, and network, in a graphical timeline that lets you see how your application behaves over time.
The MVC design pattern:
The structure of iPhone applications is based on the Model-View-Controller (MVC) design pattern because it benefits object-oriented programs in several ways. MVC–based programs tend to be more adaptable to changing requirements—in other words, they are more easily extensible than programs that do not use MVC. Furthermore, the objects in these programs tend to be more reusable and their interfaces tend to be better defined.
In the MVC design pattern, the model layer consists of objects that represent the data your application manages. The objects in this layer should be organized in the way that makes the most sense for the data. External interactions with model objects occur through a well-defined set of interfaces, whose job is to ensure the integrity of the underlying data at all times.
The view layer defines the presentation format and appearance of the application. This layer consists of your application’s windows, views, and controls. The views can be standard system views or custom views you create. You configure these views to display the data from your model objects in an appropriate way. In addition, your view objects need to generate notifications in response to events and user interactions with that data.
The controller layer acts as the bridge between the model and view layers. It receives the notifications generated by the view layer and uses them to make the corresponding changes in the data model. Similarly, if the data in the data layer changes for other reasons (perhaps because of some internal computation loop), it notifies an appropriate controller object, which then updates the views.
Hi, we’re looking for a little help on objective-C / iphone dev.
Could you please drop me an email when you get a chance.
Thanks, JP
JP,
what app are you developing right now?
can i get your email or IM.
Thanks,
JP