iAd
The iAd framework provides new callback methods for developers who use multiple add networks and want to be notified when a new ad is available. The bannerViewWillLoadAd: method (defined in the ADBannerViewDelegate protocol) is called when a banner has confirmed that an ad is available but before the ad is fully downloaded and ready to be presented. The interstitialAdWillLoad: method (defined in theADInterstitialAdDelegate protocol) offers similar behavior for interstitial ads.
Game Kit
The Game Kit framework and Game Center now have the following features:
The GKTurnBasedMatch class provides support for turn-based gaming, which allows games to create persistent matches whose state is stored in iCloud. Your game manages the state information for the match and determines which player must act to advance the state of the match.
Your game can now adjust the default leaderboard (implemented by the GKLeaderboard class) shown to each player. If your game does not change the default leaderboard for a player, that player sees the leaderboard configured for your application in iTunes Connect.
The GKNotificationBanner class implements a customizable banner similar to the banner shown to players when they log in to Game Center. Your game may use this banner to display messages to the player.
When your game reports an achievement, it can automatically display a banner to the player using the GKAchievement class.
A GKMatchmakerViewController object can now add players to an existing match in addition to creating a new match.
The GKMatchDelegate protocol now includes a method to reconnect devices when a two-player match is disconnected.
Foundation
The Foundation framework includes the following enhancements:
The NSFileManager class includes new methods for moving a file to a user’s iCloud storage.
The new NSFileCoordinator class and NSFilePresenter protocol implement now locking support and notifications when manipulating documents in iCloud.
The new NSFileVersion class reports and manages conflicts between different versions of a file in iCloud.
The NSURL class includes new methods and constants to support syncing items to a user’s iCloud storage.
The new NSMetadataQuery class supports attributes for items synced to a user’s iCloud storage. Several other metadata-related classes were also added, including NSMetadataItem, NSMetadataQueryResultGroup, and NSMetadataQueryAttributeValueTuple.
The new NSJSONSerialization class is a new class that supports back-and-forth conversions between JSON data and Foundation types.
The new NSLinguisticTagger class is a new class lets you break down a sentence into its grammatical components, allowing the determination of nouns, verbs, adverbs, and so on. This tagging works fully for English and the class also provides a method to find out what capabilities are available for other languages.
This framework now includes the NSFileWrapper class for managing file packages—that is, files implemented as an opaque directory.
The new NSOrderedSet collection class offers the semantics of sets, whereby each element occurs at most once in the collection, but where elements are in a specific order.
Most delegate methods are now declared using formal protocols instead of as categories on NSObject.
Event Kit and Event Kit UI
The Event Kit framework includes the following enhancements:
The class hierarchy has been restructured. There is now a common base class called EKObject and portions of the EKEvent class have been moved into a new base class called EKCalendarItem.
With the EKEventStore class, you can now create and delete calendars programmatically, fetch calendars based on their identifier, save and remove events in batches, and trigger a programmatic refresh of calendar data.
The new EKSource class represents the source for creating new calendars and events.
The EKCalendar class now provides access to a calendar’s UUID, source, and other attributes.
The Event Kit UI framework now includes the EKCalendarChooser class, which provides a standard way for selecting from the user’s iCal calendars.
Core Motion
The Core Motion framework now supports reporting heading information and magnetometer data for devices that have the corresponding hardware.
Core Location
The Core Location framework (CoreLocation.framework) now includes support for both forward and reverse geocoding location data. This support allows you to convert back and forth between a set of map coordinates and information about the street, city, country (and so on) at that coordinate.
Core Graphics
The Core Graphics framework (CoreGraphics.framework) includes some new interfaces to support the creation of paths. Specifically, there are new interfaces for creating paths with an ellipse or rectangle and for adding arcs to existing paths.
Core Data
The Core Data framework includes the following enhancements:
Core Data provides integration with the iOS document architecture and iCloud storage. The UIManagedDocument class is a concrete subclass of UIDocument that uses a Core Data persistent store for document data storage.
For applications built for iOS 5.0 or later, persistent stores now store data by default in an encrypted format on disk. The default protection level prevents access to the data until after the user unlocks the device for the first time. You can change the protection level by assigning a custom value to the NSPersistentStoreFileProtectionKey key when configuring your persistent stores. For additional information about the data protection that are new in iOS 5.0, see “Data Protection Improvements.”
Core Data formalizes the concurrency model for the NSManagedObjectContext class with new options. When you create a context, you can specify the concurrency pattern to use with it: thread confinement, a private dispatch queue, or the main dispatch queue. TheNSConfinementConcurrencyType option provides the same behavior that was present on versions of iOS prior to 5.0 and is the default. When sending messages to a context created with a queue association, you must use the performBlock: or performBlockAndWait:method if your code is not already executing on that queue (for the main queue type) or within the scope of a performBlock... invocation (for the private queue type). Within the blocks passed to those methods, you can use the methods of NSManagedObjectContext freely. TheperformBlockAndWait: method supports API reentrancy. The performBlock: method includes an autorelease pool and calls theprocessPendingChanges method upon completion.
You can create nested managed object contexts, in which the parent object store of a context is another managed object context rather than the persistent store coordinator. This means that fetch and save operations are mediated by the parent context instead of by a coordinator. This pattern has a number of usage scenarios, including performing background operations on a second thread or queue and managing discardable edits, such as in an inspector window or viewNested contexts make it more important than ever that you adopt the “pass the baton” approach of accessing a context (by passing a context from one view controller to the next) rather than retrieving it directly from the application delegate.
Managed objects support two significant new features: ordered relationships, and external storage for attribute values. If you specify that the value of a managed object attribute may be stored as an external record, Core Data heuristically decides on a per-value basis whether it should save the data directly in the database or store a URI to a separate file that it manages for you.
There are two new classes, NSIncrementalStore and NSIncrementalStoreNode, that you can use to implement support for nonatomic persistent stores. The store does not have to be a relational database—for example, you could use a web service as the back end.
Core Audio
The Core Audio family of frameworks includes the following changes in iOS 5.0:
Audio-session routing information is now specified using dictionary keys. There are also new modes for managing your application’s audio behavior:
Voice chat mode optimizes the system for two-way voice conversation.
Video recording mode configures the device for video capture.
Measurement mode disables automatic compression and limiting for audio input.
Default mode provides iOS 4.3.3 behavior.
Core Audio adds seven new audio units for handling advanced audio processing features in your application, such as reverb, adjustable equalization, and time compression and stretching. The new Sampler unit lets you create music instruments, for which you can provide your own sounds. The new AUFilePlayer unit lets you play sound files and feed them directly to other audio units.
The 3D Mixer audio unit is enhanced in iOS 5.0 to provide reverb and other effects useful in game audio.
You can automate audio unit parameters in an audio processing graph, which lets you build a music mixer that remembers fader positions and changes.
You can now use the advanced features of Apple Core Audio Format files in iOS. For example, you might create new voices for the Sampler audio unit.
There is now programmatic support for adjusting the audio input gain.
Core Audio now supports 32-bit floating-point audio data for applications that need to provide high quality audio.
AV Foundation
The AV Foundation framework includes the following enhancements:
There is automatic support for playing audio and video content over AirPlay. Applications can opt out of transmitting video over AirPlay using the allowsAirPlayVideo property of the AVPlayer class.
New properties on the AVPlayerItem class indicate whether the item supports fast-forwarding or rewinding of the content.
Assets Library
The Assets Library framework includes the following enhancements:
Support for accessing photo streams
Support for creating new albums in the user’s photo library
Support for adding assets to albums
The ability to get an aspect ratio thumbnail for an asset
The ability to modify saved assets
Address Book
The Address Book framework adds support for importing and exporting vCard data. It also adds new keys to associate social network affiliations with a user record.
Security
The Security framework (Security.framework) now includes the Secure Transport interfaces, which are Apple’s implementation of the SSL/TLS protocols. You can use these interfaces to configure and manage SSL sessions, manage ciphers, and manage certificates.