The Foundation Kit, or just Foundation for short, is an
Objective-C
Objective-C is a high-level general-purpose, object-oriented programming language that adds Smalltalk-style message passing (messaging) to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was ...
framework in the
OpenStep
OpenStep is an object-oriented application programming interface (API) specification developed by NeXT. It provides a framework for building graphical user interfaces (GUIs) and developing software applications. OpenStep was designed to be plat ...
specification described by
NeXT Computer, Inc.. It provides basic classes such as wrapper classes and data structure classes. This framework uses the prefix NS (for
NeXTSTEP
NeXTSTEP is a discontinued object-oriented, multitasking operating system based on the Mach kernel and the UNIX-derived BSD. It was developed by NeXT, founded by Steve Jobs, in the late 1980s and early 1990s and was initially used for its ...
). It is also part of
Cocoa and of the
Swift
Swift or SWIFT most commonly refers to:
* SWIFT, an international organization facilitating transactions between banks
** SWIFT code
* Swift (programming language)
* Swift (bird), a family of birds
It may also refer to:
Organizations
* SWIF ...
standard library.
Classes
NSObject
This class is the most common base class for
Objective-C
Objective-C is a high-level general-purpose, object-oriented programming language that adds Smalltalk-style message passing (messaging) to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was ...
hierarchies and provides standard methods for working with objects by
managing the memory associated with them and querying them.
NSString and NSMutableString
A class used for
string manipulation, representing a
Unicode
Unicode or ''The Unicode Standard'' or TUS is a character encoding standard maintained by the Unicode Consortium designed to support the use of text in all of the world's writing systems that can be digitized. Version 16.0 defines 154,998 Char ...
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 structure
In computer science, a data structure is a data organization and storage format that is usually chosen for Efficiency, efficient Data access, access to data. More precisely, a data structure is a collection of data values, the relationships amo ...
s 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.
Major implementations
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
OpenStep is an object-oriented application programming interface (API) specification developed by NeXT. It provides a framework for building graphical user interfaces (GUIs) and developing software applications. OpenStep was designed to be plat ...
compliance, and is in some places incompatible. The Foundation Kit is in the iOS
Cocoa Touch
UIKit is an application development environment and graphical user interface toolkit from Apple Inc. used to build apps for the iOS, iPadOS, watchOS, tvOS, and visionOS operating systems.
UIKit provides an abstraction layer of iOS, the ...
API. This framework is based on the macOS Cocoa.
GNUstep
The Foundation Kit is implemented in
GNUstep
GNUstep is a free software implementation of the Cocoa (formerly OpenStep) Objective-C frameworks, widget toolkit, and application development tools for Unix-like operating systems and Microsoft Windows. It is part of the GNU Project.
GNUst ...
's Base Package (libs-base). This implementation is mostly comparable (4 classes are missing) and aims to be comparable with both the
OpenStep
OpenStep is an object-oriented application programming interface (API) specification developed by NeXT. It provides a framework for building graphical user interfaces (GUIs) and developing software applications. OpenStep was designed to be plat ...
API and later
macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
additions. The missing classes have been dropped by Apple as well.
Cocotron
The Foundation Kit is implemented i
Cocotron an open-source implementation of Cocoa. It is also a part of
Darling.
PureFoundation
PureFoundationis an open-source implementation of Foundation that implements Foundation by wrapping
Core Foundation
Core Foundation (also called CF) is a C application programming interface (API) written by Apple Inc. for its operating systems, and is a mix of low-level routines and wrapper functions. Most Core Foundation routines follow a certain naming c ...
, just like in Cocoa, rather than create a separate Foundation from scratch like GNUstep and Cocotron.
SwiftFoundation
SwiftFoundation (swift-corelibs-foundation) is Apple's open-source
Swift
Swift or SWIFT most commonly refers to:
* SWIFT, an international organization facilitating transactions between banks
** SWIFT code
* Swift (programming language)
* Swift (bird), a family of birds
It may also refer to:
Organizations
* SWIF ...
implementation of the Foundation API for platforms where there is no Objective-C runtime. It also includes an implementation of
Core Foundation
Core Foundation (also called CF) is a C application programming interface (API) written by Apple Inc. for its operating systems, and is a mix of low-level routines and wrapper functions. Most Core Foundation routines follow a certain naming c ...
.
ApportableFoundation
ApportableFoundation is an implementation of Foundation Kit (Foundation, CoreFoundation, and CFNetwork) based on Apple's CFLite release. It works on
Android and other
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
systems, and makes up part of the Darling macOS translation layer for Linux.
See also
*
OpenStep
OpenStep is an object-oriented application programming interface (API) specification developed by NeXT. It provides a framework for building graphical user interfaces (GUIs) and developing software applications. OpenStep was designed to be plat ...
*
Application Kit
*
UIKit
*
GNUstep
GNUstep is a free software implementation of the Cocoa (formerly OpenStep) Objective-C frameworks, widget toolkit, and application development tools for Unix-like operating systems and Microsoft Windows. It is part of the GNU Project.
GNUst ...
*
Cocoa (API)
Cocoa is Apple's native object-oriented application programming interface (API) for its desktop operating system macOS.
Cocoa consists of the Foundation Kit, Application Kit, and Core Data frameworks, as included by the Cocoa.h header file, ...
References
{{Reflist
External links
GNUstep BaseApple Foundation Framework Reference*
ttp://www.gnustep.org/resources/OpenStepSpec/FoundationKit/Classes/index.html List of Classesin OpenStep specification
OPENSTEP SPECIFICATION
NeXT
macOS APIs
MacOS programming tools