This article needs additional citations for verification. (December 2009)
The Foundation Kit, or just Foundation for short, is an Objective-C framework in the OpenStep specification. It provides basic classes such as wrapper classes and data structure classes. This framework uses the prefix NS (for NeXTSTEP). It is also part of Cocoa and of the Swift standard library.
NSString and NSMutableString
A class used for string manipulation, representing a Unicode string (most typically using UTF-16 as its internal format). NSString is immutable, and thus can only be initialized but not modified. NSMutableString is a modifiable version.
NSValue and NSNumber
NSValue is a wrapper class for C data types, and NSNumber is a wrapper class for C number data types such as int, double, and float. The data structures in Foundation Kit can only hold objects, not primitive types, so wrappers such as NSValue and NSNumber are used in those data structures.
NSArray and NSMutableArray
A dynamic array of objects, supporting constant-time indexing. NSArray is an immutable version that can only be initialized with objects but not modified. NSMutableArray may be modified by adding and removing objects.
NSDictionary and NSMutableDictionary
An associative data container of key-value pairs with unique keys. Searching and element addition and removal (in the case of NSMutableDictionary) is faster-than-linear. However, the order of the elements within the container is not guaranteed.
NSSet and NSMutableSet
An associative container of unique keys, similar to NSDictionary, with the difference that members do not contain a data object.
NSData and NSMutableData
A wrapper for raw byte data. An object of this type can dynamically allocate and manage its data, or it can refer to data owned by and managed by something else (such as a static numeric array).
NSDate, NSTimeZone and NSCalendar
Classes that store times and dates and represent calendrical information. They offer methods for calculating date and time differences. Together with NSLocale, they provide methods for displaying dates and times in many formats, and for adjusting times and dates based on location in the world.
macOS and iOS
The Foundation Kit is part of the macOS Cocoa API. Beginning as the successor to OPENSTEP/Mach, this framework has deviated from OpenStep compliance, and is in some places incompatible. The Foundation Kit is in the iOS Cocoa Touch API. This framework is based on the macOS Cocoa.
The Foundation Kit is implemented in GNUstep's Base Package (libs-base). This implementation is mostly comparable (4 classes are missing) and aims to be comparable with both the OpenStep API and later macOS additions. The missing classes have been dropped by Apple as well.
The Foundation Kit is implemented in Cocotron, an open-source implementation of Cocoa. It is also a part of Darling.
PureFoundation is an open-source implementation of Foundation that implements Foundation by wrapping Core Foundation, just like in Cocoa, rather than create a separate Foundation from scratch like GNUstep and Cocotron.
SwiftFoundation (swift-corelibs-foundation) is Apple's open-source Swift implementation of the Foundation API for platforms where there is no Objective-C runtime. It also includes an implementation of Core Foundation.
ApportableFoundation is an implementation of Foundation Kit (Foundation, CoreFoundation, and CFNetwork) based on Apple's CFLite release. It works on Android and other Linux systems, and makes up part of the Darling macOS translation layer for Linux.
- Bumgarner, Bill. "The NS prefix predated Sun signing on to implement the OpenStep spec by quite a bit".
- "OpenStep Compliance". GNUstep (Base). Retrieved 17 February 2020.
- "swift-corelibs-foundation". GitHub.
- GNUstep Base
- Apple Foundation Framework Reference
- Foundation section in the Cocoa Fundamentals Guide
- List of Classes in OpenStep specification