Введение

Фундаментальный фреймворк Objective-C в спецификации OpenStep

Foundation Kit, или просто Foundation, — это фреймворк Objective-C в спецификации OpenStep, разработанный компанией NeXT Computer, Inc. Он предоставляет базовые классы, такие как классы-обертки и классы структур данных. В этом фреймворке используется префикс NS (от NeXTSTEP). Он также является частью Cocoa и стандартной библиотеки Swift.

НСОобъект

Этот класс является наиболее распространенным базовым классом для иерархий Objective-C и предоставляет стандартные методы для работы с объектами, управляя связанной с ними памятью и осуществляя запросы к ним.

NSString и NSMutableString

Класс, предназначенный для работы со строками, представляющий строку Unicode (как правило, использующую UTF-16 в качестве внутреннего формата). NSString является неизменяемым, поэтому его можно только инициализировать, но не изменять. NSMutableString — это изменяемая версия.

NSValue и NSNumber

NSValue — это класс-обертка для типов данных C, а NSNumber — это класс-обертка для числовых типов данных C, таких как int, double и float. Структуры данных в Foundation Kit могут хранить только объекты, а не примитивные типы, поэтому для использования в этих структурах данных применяются обертки, такие как NSValue и NSNumber.

NSArray и NSMutableArray

Динамический массив объектов, обеспечивающий доступ по индексу за постоянное время. NSArray — это неизменяемая версия, которую можно инициализировать только объектами, но нельзя изменять. NSMutableArray может быть изменен путем добавления и удаления объектов.

NSDictionary и NSMutableDictionary

Ассоциативный контейнер данных, хранящий пары ключ-значение с уникальными ключами. Поиск, добавление и удаление элементов (в случае NSMutableDictionary) выполняется быстрее, чем при линейном поиске. Однако порядок элементов внутри контейнера не гарантируется.

NSSet и NSMutableSet

Ассоциативный контейнер уникальных ключей, аналогичный NSDictionary, но в отличие от него, элементы не содержат объект данных.

NSData и NSMutableData

Упаковка для необработанных байтовых данных. Объект этого типа может динамически выделять и управлять своими данными или ссылаться на данные, принадлежащие и управляемые другим объектом (например, статический числовой массив).

NSDate, NSTimeZone и NSCalendar (Дата, часовая зона и календарь NSC)

Классы, хранящие информацию о времени и дате и представляющие календарные данные. Они предоставляют методы для вычисления разницы между датами и временем. Вместе с NSLocale они обеспечивают возможность отображения дат и времени в различных форматах, а также корректировки времени и дат с учетом местоположения в мире.

macOS и iOS

Foundation Kit является частью macOS Cocoa API. Изначально созданный как преемник OPENSTEP/Mach, этот фреймворк отошел от соответствия OpenStep и в некоторых местах является несовместимым. Foundation Kit также присутствует в iOS Cocoa Touch API. Этот фреймворк основан на macOS Cocoa.

GNUstep

Foundation Kit реализован в базовом пакете GNUstep (libs base). Эта реализация в основном соответствует оригиналу (отсутствуют 4 класса) и стремится быть совместимой как с OpenStep API, так и с последующими дополнениями macOS. Apple также отказалась от этих отсутствующих классов.

Кокотрона

Foundation Kit реализован в Cocotron — реализации Cocoa с открытым исходным кодом. Он также является частью Darling.

PureFoundation (Фонд чистой энергии)

PureFoundation — это реализация Foundation с открытым исходным кодом, которая реализует Foundation путем оборачивания Core Foundation, подобно Cocoa, а не создаёт отдельную реализацию Foundation с нуля, как это делают GNUstep и Cocotron.

Фонд Swift

SwiftFoundation (swift corelibs foundation) — это реализация API Foundation на Swift с открытым исходным кодом от Apple для платформ, где отсутствует среда выполнения Objective-C. Она также включает в себя реализацию Core Foundation.

Приносящий вкладФондация

ApportableFoundation — это реализация Foundation Kit (Foundation, CoreFoundation и CFNetwork), основанная на выпуске CFLite от Apple. Она работает на Android и других системах Linux и составляет часть слоя трансляции Darling macOS для Linux.