iOS 2.2 Release Notes
-
iOS 3.1 Release Notes
-
iOS 3.2 Release Notes
-
iOS 4.0 Release Notes
AV Foundation
In this release, the AVAssetReader and AVAssetWriter classes have been removed from the AV Foundation framework.
GameKit
The desiredPlayers property has been removed from the GKMatchRequest class
GameKitBeta.h has been renamed to GameKitPreview.h. This will break existing projects that link against GameKitBeta.h. Please recompile as needed.
UIKit
UIInvalidBackgroundTask has been renamed to UIBackgroundTaskInvalid
Core Data Release Notes for OS X v10.6 and iOS 4
-
iOS 4.0.2 Release Notes
-
iOS 4.1 Release Notes
GameKit
For this release, GameKitPreview.h was renamed Gamekit.h.
iOS 4.2 Release Notes
-
iOS 4.3 Release Notes
iAD
The new API, ADInterstitialView, has been removed and replaced with the ADInterstitialAd class, which inherits from NSObject, not from UIView. Behavior has not changed except that two new methods are available, presentInView: and presentFromViewController:, that formalize two distinct use cases. For additional information on these API changes, see ADInterstitialAd Class Reference. The sample code, iAdInterstitialSuite, has also been updated to work with these API changes.
AV Foundation Release Notes for iOS 4.3
-
iOS 4.3.2 Release Notes
-
iOS 5.0 Release Notes
-
Foundation Release Notes for iOS 5
Safe File Mapping for NSData
Before iOS 5, specifying NSDataReadingMapped (or NSMappedRead) for -initWithContentsOfFile:options:error: would cause NSData to always attempt to map in the specified file. However, in some situations, mapping a file can be dangerous. For example, when NSData maps a file from a USB device or over the network the existence of said file can't be guaranteed for the lifetime of the object. Accessing the NSData's bytes after the mapped file disappears will likely cause unpredictable crashes in your application.
For applications linked on iOS 5 or later, NSDataReadingMapped will now only map the requested file if it can determine that mapping the file will be relatively safe. To reflect this change, NSDataReadingMapped has been deprecated and is now an alias for NSDataReadingMappedIfSafe.
The methods -dataWithContentsOfMappedFile: and -initWithContentsOfMappedFile: have been deprecated. In the very rare event that your application needs to map a file regardless of safety, you may use the NSDataReadingMappedAlways option.
NSCalendar
For many operations, there is no difference in meaning between NSWeekOfMonthCalendarUnit and NSWeekOfYearCalendarUnit, but for some there is a difference. Obviously getting the ordinality of a week with the month will usually give a different answer than the ordinality of the week within the year. The NSWeekCalendarUnit constant is not yet officially deprecated, but its use in new code is discouraged. It has a behavior like either NSWeekOfMonthCalendarUnit or NSWeekOfYearCalendarUnit, as the case may be, to give it behavior like it had prior to iOS 5.
Strings File Handling
NSString methods -propertyList and -propertyListFromStringsFileFormat will be deprecated in a future release.
iOS 5 Release Notes - CoreFoundation Framework
CFXMLParser
CFXMLParser and CFXMLNode are deprecated. CFXMLParser has some deficiencies in terms of standards compliance and performance, and clients should migrate their uses of the CFXMLParser classes over to NSXMLParser, NSXMLDocument, or other XML parsing technologies on iOS 5.
CFCalendar
For many operations, there is no difference in meaning between kCFCalendarUnitWeekOfMonth and kCFCalendarUnitWeekOfYear, but for some there is a difference. Obviously getting the ordinality of a week with the month will usually give a different answer than the ordinality of the week within the year. The kCFCalendarUnitWeek constant is not yet officially deprecated, but its use in new code is discouraged. It has a behavior like either kCFCalendarUnitWeekOfMonth or kCFCalendarUnitWeekOfYear, as the case may be, to give it behavior like it had prior to iOS 5.
CFURLEnumerator
CFURLEnumeratorGetSourceDidChange() is now deprecated.
Core Data Release Notes for OS X v10.7 and iOS 5.0
-
iOS 5.1 Release Notes
Backup
Apps running on iOS 5.1 and later must use the newer attributes and not add the com.apple.MobileBackup extended attribute directly, as previously documented. The com.apple.MobileBackup extended attribute is deprecated and support for it may be removed in a future release.
iOS 6.0 Release Notes
Social
The requestAccessToAccountsWithType:withCompletionHandler: method of ACAccountStore is now deprecated. To access user accounts, please use the requestAccessToAccountsWithType:options:completion: method.
UIKit
Autorotation is changing in iOS 6. In iOS 6, the shouldAutorotateToInterfaceOrientation: method of UIViewController is deprecated. In its place, you should use the supportedInterfaceOrientationsForWindow: and shouldAutorotate methods.
The setStatusBarOrientation:animated: method is not deprecated outright. It now works only if the supportedInterfaceOrientations method of the top-most full-screen view controller returns 0. This makes the caller responsible for ensuring that the status bar orientation is consistent.
In iOS 6, the viewWillUnload and viewDidUnload methods of UIViewController are now deprecated. If you were using these methods to release data, use the didReceiveMemoryWarning method instead. You can also use this method to release references to the view controller’s view if it is not being used. You would need to test that the view is not in a window before doing this.
The setContentStretch: method of UIView has been deprecated. To achieve the same effect, use the resizableImageWithCapInsets: method of UIImage and display the image with a UIImageView.
Notes specific to OS X 10.8 Mountain Lion and iOS 6
NSPointerFunctions zeroing weak changes
The NSPointerFunctionsZeroingWeakMemory option has been deprecated. This option was for holding zeroing weak objects under garbage collection, and non-retained object pointers under manual reference counting.
This option has been superseded by the NSPointerFunctionsWeakMemory option, which causes zeroing weak behavior under manual reference counting, automatic reference counting, and garbage collection. Note that this is not entirely equivalent to and compatible with the previous option's behavior: objects must be weak-reference-safe under manual and automatic reference counting; not all objects are.
NSHashTable zeroing weak changes
The NSHashTableZeroingWeakMemory hash table option has been deprecated. This option was for holding zeroing weak objects under garbage collection, and non-retained object pointers under manual reference counting.
This option has been superseded by the NSHashTableWeakMemory option, which causes zeroing weak behavior under manual reference counting, automatic reference counting, and garbage collection. Note that this is not entirely equivalent to and compatible with the previous option's behavior: objects must be weak-reference-safe under manual and automatic reference counting; not all objects are.
Similarly, the convenience creation method +hashTableWithWeakObjects has been deprecated, and a new one which uses the new option, +weakObjectsHashTable, has been created.
Note that, analogously to what happens in garbage collection when a weak storage location was read, and an object thus read is "enlivened" so as to not be collected in the immediate future, a similar thing happens with weak references under manual and automatic reference counting: the object gets retained and autoreleased, so that it continues to live for at least the current scope of the reading code. This affects weak hash tables as well, and weakly held objects are returned with an extra retain and autoreleased, unlike typical collection behavior.
NSMapTable zeroing weak changes
The NSMapTableZeroingWeakMemory map table option has been deprecated. This option was for holding zeroing weak objects under garbage collection, and non-retained object pointers under manual reference counting.
This option has been superseded by the NSMapTableWeakMemory option, which causes zeroing weak behavior under manual reference counting, automatic reference counting, and garbage collection. Note that this is not entirely equivalent to and compatible with the previous option's behavior: objects must be weak-reference-safe under manual and automatic reference counting; not all objects are.
Similarly, the 4 convenience creation methods +mapTableWith(Weak|Strong)To(Weak|Strong)Objects have been deprecated, and 4 new ones which uses the new option, +(weak|strong)To(Weak|Strong)ObjectsMapTable, have been created.
However, weak-to-strong NSMapTables are not currently recommended, as the strong values for weak keys which get zero'd out do not get cleared away (and released) until/unless the map table resizes itself.
Note that, analogously to what happens in garbage collection when a weak storage location was read, and an object thus read is "enlivened" so as to not be collected in the immediate future, a similar thing happens with weak references under manual and automatic reference counting: the object gets retained and autoreleased, so that it continues to live for at least the current scope of the reading code. This affects weak map tables as well, and weakly held objects are returned with an extra retain and autoreleased, unlike typical collection behavior.
NSPointerArray zeroing weak changes
Along with the deprecation of the NSPointerFunctions' NSPointerFunctionsZeroingWeakMemory option, the two +pointerArrayWith(Weak|Strong)Objects convenience creation methods have been deprecated.
Two new methods, +weakObjectsPointerArray and +strongObjectsPointerArray, have been added which create NSPointerArrays with the NSPointerFunctionsWeakMemory behavior.
NSRealMemoryAvailable() function deprecated
The NSRealMemoryAvailable() function has been deprecated. In 32-bit, its return value cannot express the complete range of the amount of memory which may actually be available (i.e., greater than 4GB). Use NSProcessInfo's -physicalMemory method instead.
NSCopyObject() function deprecated
The NSCopyObject() function has been deprecated. It has always been a dangerous function to use, except in the implementation of copy methods, and only then with care. It was not available under automatic reference counting in 10.7, and now it has been formally deprecated.
iOS 6.1 Release Notes
Language Support: Thai
iOS 6.0 introduced a five-row Thai keyboard and removed the previous four-row keyboard. In iOS 6.1, both the five-row and the four-row Thai keyboards are available.
iOS 7.0 Release Notes
Multipeer Connectivity
The timeout has been removed from connectPeer:withNearbyConnectionData.
Security
-[UIDevice uniqueIdentifier] is no longer accepted in submissions to the App Store. In iOS 7, apps that are already on the store or on users’ devices that call this removed API will no longer be returned the UDID. Instead, -[UIDevice uniqueIdentifier] will return a 40-character string starting with FFFFFFFF, followed by the hex value of -[UIDevice identifierForVendor]. It is important to consider how this will affect existing apps. Consider submitting updates that no longer access the UDID.
The API gethostuuid() has been removed and will not be accepted for submission to the store, regardless of the targeted OS. For existing apps running on iOS 7, the function will return a uuid_t representation of the vendor identifier (-[UIDevice identifierForVendor]).
UIKit
This gesture recognizer has a property that describes the edges on which it’s active. UIRectEdge is a new enum type that this property and -[UIViewController edgesForExtendedLayout] can share. UIRectEdge replaces UIExtendedEdge, which will be removed. The members of both have the same values. Use Xcode to replace all instances of “UIExtendedEdge” in your project with “UIRectEdge”.
Notes specific to OS X 10.9 Mavericks and iOS 7
Changes to NSUserDefaults "compatibility" keys (Mac)
The deprecated constant user defaults keys at the bottom of NSUserDefaults.h are no longer functional in applications built with the 10.9 or later SDK.
NSCalendar
More details about these new APIs can be found in NSCalendar.h. The Date and Time Programming Guide also has more detail discussion about how these APIs would be used.
In addition to the new APIs, Foundation also exports a new notification: NSCalendarDayChangedNotification. This new notification is posted through [NSNotificationCenter defaultCenter] when the system day changes. Note that the notification is not posted to observers on any particular or defined thread or queue, so if you need the handling of the notification to do things that must only be done by a specific thread or queue, you need to then schedule that work in response to the notification.
CoreFoundation and Foundation are going to deprecate several existing calendar-related APIs in the next release. If the preprocessor macro NS_ENABLE_CALENDAR_DEPRECATIONS is set to a non-zero value in a project, then usage of those APIs will be indicated by the compiler.
iOS 7.1 Release Notes
-
iOS 8 Release Notes
UIKit
The leftLayoutGuide and rightLayoutGuide APIs have been removed. Please use the layoutMargins property instead.
Notes specific to OS X 10.10 Yosemite and iOS 8
NSOperation's threadPriority property
The threadPriority property has been deprecated. Move to using the "qualityOfService" property and concepts instead.
iOS 8.1.1 Release Notes
UIKit
The leftLayoutGuide and rightLayoutGuide APIs have been removed. Please use the layoutMargins property instead.
iOS 8.2 Release Notes
UIKit
The leftLayoutGuide and rightLayoutGuide APIs have been removed. Please use the layoutMargins property instead.
iOS 8.3 Release Notes
-
iOS 8.4 Release Notes
-
iOS 9 Release Notes
AVFoundation
The cancelPictureInPicture method is deprecated.
CBCentralManager
The retrievePeripherals: and retrieveConnectedPeripherals methods were deprecated in iOS 7.0 and removed in iOS 9.0. Apps that use these methods will crash on launch or upon pairing an accessory.
iCloud Drive
The fetchAllChanges property on CKFetchRecordChangesOperation has been deprecated, and will be removed in iOS 9.
Notes specific to OS X 10.11 El Capitan and iOS 9
NSURL Deprecations
In OSX 10.9 and iOS 7.0, we introduced replacement API for the NSURL methods and CFURL functions:
-stringByAddingPercentEscapesUsingEncoding:
-stringByReplacingPercentEscapesUsingEncoding:
CFURLCreateStringByAddingPercentEscapes();
CFURLCreateStringByReplacingPercentEscapesUsingEncoding();
Safer Buffer API for NSDictionary
In OS X 10.11 and iOS 9, NSDictionary gains the following method:
- (void)getObjects:(ObjectType __unsafe_unretained [])objects andKeys:(KeyType __unsafe_unretained [])keys count:(NSUInteger)count;
It is intended to replace the following method, which is soft-deprecated this release, and will be officially deprecated in the future.
- (void)getObjects:(ObjectType __unsafe_unretained [])objects andKeys:(KeyType __unsafe_unretained [])keys;
Safer Buffer API for NSIndexPath
Similarly, NSIndexPath gains the following method:
- (void)getIndexes:(NSUInteger *)indexes range:(NSRange)positionRange;
Replacing the older, less safe variant (which is now soft-deprecated):
- (void)getIndexes:(NSUInteger *)indexes;
NSURLConnection
NSURLConnection is deprecated as of OS X 10.11 and iOS 9. Please use NSURLSession.
iOS 9.1 Release Notes
-
iOS 9.2 Release Notes
-
iOS 9.3 Release Notes
-
iOS 10.0 Release Notes
Safari
The SFSafariViewControllerConfiguration and initWithURL:configuration: APIs have been removed, and initWithURL:entersReaderIfAvailable: is no longer marked as deprecated. The preferredBarTintColor property has been moved to SFSafariViewController, along with the new preferredControlTintColor property, which clients should use instead of setting tintColor directly on the view. Apps linked on iOS 10 or later will no longer forward their view's tint color to SFSafariViewController.
Notes specific to macOS 10.12 Sierra and iOS 10
API Availability Macros
Foundation has switched to new availability macros for ObjC that enable much more flexibility in identifying each platform independently. These new macros are API_AVAILABLE, API_DEPRECATED, API_DEPRECATED_WITH_REPLACEMENT, and API_UNAVAILABLE. Sample use cases:
FOUNDATION_EXPORT NSURLResourceKey const NSURLCanonicalPathKey API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0));
@property BOOL usesStrongWriteBarrier API_DEPRECATED("Garbage collection no longer supported",
macosx(10.5, 10.12), ios(2.0, 10.0), watchos(2.0, 3.0), tvos(9.0, 10.0));
static const NSWindowStyleMask NSResizableWindowMask API_DEPRECATED_WITH_REPLACEMENT("NSWindowStyleMaskResizable",
macosx(10.0, 10.12)) = NSWindowStyleMaskResizable;
Deprecate GC NSPointerFunctions
The 'usesStrongWriteBarrier' and 'usesWeakReadAndWriteBarriers' properties have been deprecated.
iOS 10.1 Release Notes
Safari
The SFSafariViewControllerConfiguration and initWithURL:configuration: APIs have been removed, and initWithURL:entersReaderIfAvailable: is no longer marked as deprecated. The preferredBarTintColor property has been moved to SFSafariViewController, along with the new preferredControlTintColor property, which clients should use instead of setting tintColor directly on the view. Apps linked on iOS 10 or later will no longer forward their view's tint color to SFSafariViewController.
iOS 10.2 Release Notes
SpriteKit
The following SKNode methods and attributes are deprecated, but missing the deprecation notice from the public header (SKNode.h):
DEPRECATED: Attributes are only supported for node classes supporting SKShader (see SKSpriteNode).
iOS 10.3 Release Notes
-
iOS 11 Release Notes
Media
requestPersonalizationTokenForClientToken is deprecated in iOS 11. Use getUserTokenFromDeveloperToken instead. (32065560)
Foundation Release Notes for macOS 10.13 and iOS 11
Collection getObjects: APIs
-[NSArray getObjects:] and -[NSDictionary getObjects:andKeys:] are now hard-deprecated. Use the variants that take range or count arguments.
iOS 11.1 SDK Release Notes
-
iOS 11.2 SDK Release Notes
-