Pull to refresh

The Cocoa Environment. Part 1

Reading time5 min
Views12K
Многие об этом говорят, но какое на самом деле место занимает Cocoa environment в жизни IOS и MacOS, да и вообще что это за такая уличная магия?

Поприветствуйте Cocoa!


Cocoa — это основная среда приложений для Mac OS X (есть еще Carbon, но эта среда используется в основном только для поддержки кода написанного для Mac OS 9.) и единственная среда приложений для операционных систем IOS. Она состоит из набора объектно-ориентированных библиотек, исполняющей среды и среды разработки.
Большинство программ, которые используют пользователи Mac OS X (например, Mail или Safari), а тем более, пользователи IOS, это программы, написанные с помощью Cocoa.
Ну а для создания приложений под Cocoa используется знаменитый Xcode.

Как и с чем?


Как и во всех средах приложений, Cocoa имеет два мира: мир runtime'а и мир разработки. В мире runtime'а, Cocoa приложения представляют пользовательский интерфейс и тесную интеграцию с другими компонентами операционной системы в Mac OS X, например, Finder и Dock.
Но в мире разработки Cocoa – интегрированный набор объектно-ориентированных программных компонентов-классов, которые, собственно, позволяют творить ПО под Mac OS X и IOS. Они дают возможность делать тучу вещей, от user-interface'а до управления массивами данных.
При разработке Cocoa приложений, на самом деле, можно использовать несколько языков программирования, но родной язык — Objective-C, который является расширением ANSI C, с некоторыми синтаксическими и семантическими особенностями (на основе Smalltalk) для поддержки ООП. Кроме того, ваш код может вызывать функции определенные в non-Cocoa интерфейсе, такие как библиотеки BSD в /usr/include. Вы даже можете смешивать C++ код с Cocoa кодом и ссылаться на этот скомпилированное чудо в вашем исполняемом файле.
Наиболее важные библиотеки Cocoa упакованы в два основных framework’a для каждой платформы: AppKit для Mac OS X и UIKit для IOS. Как и все framework’и, они содержат не только динамически доступные библиотеки (а иногда и несколько версий библиотек, необходимые для обеспечения обратной совместимости), но и файлы заголовков, API документацию, и связанных с ними ресурсы. Framework — это очень важная составляющая для любого проекта под Mac или IOS.
Мас OS X поддерживает ко всему прочему еще много полезных библиотек, таких как: WebKit и Address Book frameworks, но об этом позже.

И как же Cocoa дружит с Mac OS X?


Архитектурно, Mac OS X является серией программных слоев (рис 1).


Рис 1. Вот так дружит с Mac OS X

Например, системный компонент, который в значительной степени ответственный за работу интерфейса Aqua – Quartz (реализован в Core Graphics framework), является частью слоя Application Services. Но в основании всего этого лежит Darwin (набор основных компонентов, используемых в Mac OS X и iOS). все в Mac OS X, в том числе Cocoa, в конечном счете зависит от этого слоя.
В Mac OS X, Cocoa состоит из двух основных framework'ов, которые необходимы для разработки приложений для Mac OS X:
  • AppKit. AppKit, один из компонент application framework'а, предоставляет отображение приложения на экрне и определяет структуру поведения приложений, включая обработку событий.
  • Foundation — компонент в слое Core Services, определяет основные поведения объектов, устанавливает механизмы их управления, и предоставляет возможность использовать примитивных типов данных, коллекций и сервисов операционной системы.

AppKit зависит от Foundation, который функционально находится в слое Core Services. Если посмотреть поближе на классы AppKit, можно увидеть, где Cocoa зависит от других частей Mac OS X, например, Carbon Core, Core Graphics (Quartz), и Launch Services.
  • Core Foundation. Многие классы Foundation framework основаны на эквивалентных непрозрачных классах Core Foundation. Эта тесная связь делает преобразования между совместимыми типами Core Foundation и Foundation «бесплатными». В свою очередь, классы Core Foundation используют BSD слой Darwin’а.
  • Carbon Core. AppKit и Foundation используют Carbon Core framework для получения доступа к некоторым системным службам. Например, Carbon предоставляет Core File Manager, который используется Cocoa для работы с различными файловыми системами.
  • Core Graphics. Cocoa использует Core Graphics для большинства задач связанных с отображением графики.
  • Launch Services. Класс NSWorkspace предоставляет основные возможности Launch Services. Cocoa также использует возможности Launch Services для ассоциации иконок с приложениями и документами.

Apple тщательно разработал Cocoa так, чтобы некоторые из ее программных интерфейсов давали доступ к базовым функциям, которые обычно необходимы приложениям. Но если требуются некоторые возможности, которые не
доступны через интерфейсы Cocoa, или если нужен более тонкий контроль над тем, что происходит в приложении, вы можете непосредственно использовать основные framework'и (ярким примером является Core Graphics, путем вызова функций которой можно получить более мощные средства управления графикой).

И как же Cocoa дружит с iOS?


Слой выполнения приложений в IOS называется Cocoa Touch. Хотя IOS инфраструктура, в которой работает Cocoa Touch похож на ту, в которой работает Cocoa в Mac OS X, есть некоторые существенные различия (Рис 2).


Рис 2. Вот так дружит с iOS

Как правило, системные библиотеки и framework’и IOS, которые использует UIKit являются подмножеством библиотек и framework’ов Mac OS X. Однако, из-за характера устройств, поддерживаемых ОС IOS,
есть некоторые framework’и, которые являются специфическими для IOS.
Ниже приводится краткое изложение некоторых из framework’ов каждого слоя:
  • Core OS. Этот уровень содержит ядро, файловую систему, сетеву инфраструктуру, безопасность, управления питанием, а также ряд драйверов устройств. В нем, ко всему прочему, содержится библиотека libSystem, которая поддерживает POSIX / BSD 4.4/C99 API спецификации и включает в себя системы на уровне API для многих сервисов.
  • Core Services. Предоставляет основные сервисы, такие как манипуляции со строками, управление коллекциями и сетевым взаимодействием, управление контактами, настройками. Они также дают возможность пользоваться аппаратными особенностями устройства (GPS, компас, акселерометр и гироскоп).
  • Примеры framework’а этого слоя — Core Location, Core Motion, и System Configuration.
  • Этот слой включает в себя как Foundation так и Core Foundation, которые предоставляют некоторые типы данных, такие как строки и коллекции.
  • Media. Обеспечивает слою Cocoa Touch доступ к мультимедийным возможностям. Включает в себя Core Graphics, Core Text, OpenGLES,
  • Core Animation, AVFoundation, Core Audio, и сервисы воспроизведения видео.
  • Cocoa Touch. Занимается непосредственной поддержкой приложений. Содержит такие компоненты как Game Kit, Map Kit и iAd.

Cocoa в IOS, как и Cocoa в Mac OS X, дает приложениям доступ к возможностям базовых функциям. И если вам требуется нечто большее, чем предоставляет Cocoa API, вы так же можете непосредственно использовать методы более низкого уровня.

Источник — Cocoa Fundamentals Guide
Tags:
Hubs:
Total votes 53: ↑42 and ↓11+31
Comments9

Articles