~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 77FB158EDD1FDBEE32963A5B12FA10E6__1716727920 ✰
Заголовок документа оригинал.:
✰ Cocoa (API) - Wikipedia ✰
Заголовок документа перевод.:
✰ Какао (API) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Cocoa_(API) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/77/e6/77fb158edd1fdbee32963a5b12fa10e6.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/77/e6/77fb158edd1fdbee32963a5b12fa10e6__translat.html ✰
Дата и время сохранения документа:
✰ 22.06.2024 04:47:59 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 26 May 2024, at 15:52 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Какао (API) — Википедия Jump to content

Какао (API)

Из Википедии, бесплатной энциклопедии

Какао
Разработчики) Apple Инк.
Написано в C , C++ , Objective-C , Swift
Операционная система macOS
Тип Программная среда
Лицензия Собственный
с некоторыми компонентами с открытым исходным кодом [ нужна цитата ]
Веб-сайт Apple Разработчик

Cocoa — это (API) Apple собственный объектно-ориентированный интерфейс программирования приложений для настольной операционной системы macOS .

Cocoa состоит из фреймворков Foundation Kit , Application Kit и Core Data , включенных в пакет Cocoa.h заголовочный файл, а также включенные в него библиотеки и платформы, такие как стандартная библиотека C и среда выполнения Objective-C. [1]

Приложения Cocoa обычно разрабатываются с использованием инструментов разработки, предоставляемых Apple, в частности Xcode (ранее Project Builder ) и Interface Builder (теперь часть Xcode), с использованием языков программирования Objective-C или Swift . Однако доступ к среде программирования Cocoa можно получить с помощью других инструментов. Также можно писать программы Objective-C Cocoa в простом текстовом редакторе и собирать их вручную с помощью GNU Compiler Collection (GCC) или Clang из командной строки или из make-файла .

Для конечных пользователей Cocoa приложения — это приложения, написанные с использованием среды программирования Cocoa. Такие приложения обычно имеют знакомый внешний вид, поскольку среда программирования Cocoa предоставляет множество общих элементов пользовательского интерфейса (таких как кнопки, полосы прокрутки и т. д.) и автоматизирует многие аспекты приложения в соответствии с рекомендациями Apple по человеческому интерфейсу .

Для iOS , iPadOS , tvOS и watchOS существует аналогичный API под названием Cocoa Touch , который включает в себя распознавание жестов , анимацию и другой набор графических элементов управления . Он используется в приложениях для устройств Apple, таких как iPhone , iPod Touch , iPad , Apple TV и Apple Watch .

История [ править ]

Cocoa продолжает линию нескольких программных платформ (в основном App Kit и Foundation Kit ) из сред программирования NeXTSTEP и OpenStep , разработанных NeXT в 1980-х и 1990-х годах. Apple приобрела NeXT в декабре 1996 года и впоследствии приступила к работе над операционной системой Rhapsody , которая должна была стать прямым преемником OpenStep. Он должен был иметь базу эмуляции классических Mac OS приложений под названием Blue Box . База библиотек OpenStep и поддержка двоичных файлов получила название Yellow Box . Rhapsody превратилась в Mac OS X, а Yellow Box стал Cocoa. Таким образом, классы Cocoa начинаются с букв NS , например NSString или NSArray. Они обозначают оригинальный фирменный термин платформы OpenStep — NeXTSTEP. [2]

Большая часть работы, затраченной на разработку OpenStep, была применена к разработке Mac OS X, причем Cocoa была наиболее заметной частью. Однако различия существуют. Например, NeXTSTEP и OpenStep использовали Display PostScript для отображения текста и графики на экране, в то время как Cocoa зависит от Apple Quartz (который использует модель изображения Portable Document Format (PDF), но не лежащую в ее основе технологию). Cocoa также имеет определенный уровень поддержки Интернета, включая классы NSURL и WebKit HTML- и другие, в то время как OpenStep имел лишь элементарную поддержку управляемых сетевых подключений через классы NSFileHandle и сокеты Беркли .

Набор инструментов API первоначально назывался «Yellow Box» и был переименован в Cocoa — название, которое уже было зарегистрировано в качестве товарного знака Apple. Торговая марка Apple Cocoa возникла как название приложения для создания мультимедийных проектов для детей. Название должно было напоминать «Java для детей», поскольку оно было встроено в веб-страницы. [3] Первоначальная программа «Какао» была прекращена после возвращения Стива Джобса в Apple. В то время Java была основным направлением деятельности компании, поэтому в качестве нового названия для «Желтого ящика» было использовано «Какао», поскольку, помимо использования собственного Objective-C, к нему также можно было получить доступ из Java через связующий слой. [4] Несмотря на то, что Apple прекратила поддержку моста Cocoa Java, это название сохранилось и даже использовалось для API Cocoa Touch .

Управление памятью [ править ]

Одной из особенностей среды Cocoa является возможность управления динамически выделяемой памятью. Класс NSObject Foundation Kit , от которого произошло большинство классов, как поставщиков, так и пользователей, реализует схему подсчета ссылок для управления памятью. Объекты, производные от корневого класса NSObject, отвечают на retain и releaseсообщение и вести учет. Метод под названием retainCountсуществует, но, вопреки своему названию, обычно не возвращает точное количество сохранений объекта. В основном он используется для целей системного уровня. Apple не рекомендует вызывать его вручную.

Недавно выделенный объект, созданный с помощью alloc или copyимеет счетчик сохранения, равный одному. Отправка этого объекта retain сообщение увеличивает счетчик сохранения, отправляя ему releaseсообщение уменьшает счетчик сохранения. Когда счетчик сохранения объекта достигает нуля, он освобождается с помощью процедуры, аналогичной деструктору C++ . dealloc не гарантируется вызов.

Начиная с Objective-C 2.0, среда выполнения Objective-C реализовала дополнительный сборщик мусора , который сейчас устарел и устарел в пользу автоматического подсчета ссылок (ARC). В этой модели среда выполнения превратила операции подсчета ссылок Cocoa , такие как «сохранение» и «выпуск», в пустые операции . Сборщик мусора не существует в реализации iOS Objective-C 2.0. Сбор мусора в Objective-C выполняется в фоновом потоке с низким приоритетом и может останавливаться на пользовательских событиях Cocoa, чтобы обеспечить оперативность взаимодействия с пользователем. Устаревший сборщик мусора по-прежнему доступен в Mac OS X версии 10.13, но ни одно приложение Apple его не использует.

В 2011 году компилятор LLVM представил автоматический подсчет ссылок (ARC), который заменяет обычный сборщик мусора, выполняя статический анализ исходного кода Objective-C и вставляя сообщения сохранения и выпуска по мере необходимости.

Основные фреймворки [ править ]

Cocoa состоит из трёх Objective-C, объектных библиотек называемых frameworks . Фреймворки функционально аналогичны разделяемым библиотекам — скомпилированному объекту, который можно динамически загружать в адресное пространство программы во время выполнения, но фреймворки добавляют связанные ресурсы, файлы заголовков и документацию. Фреймворки Cocoa реализованы как своего рода пакет , содержащий вышеупомянутые элементы в стандартных местах.

  • Foundation Kit ( Foundation ), впервые появился в Enterprise Objects Framework на NeXTSTEP 3. [5] Он был разработан в рамках работы OpenStep и впоследствии стал основой для AppKit OpenStep, когда эта система была выпущена в 1994 году. В macOS Foundation основан на Core Foundation . Foundation — это универсальная объектно-ориентированная библиотека, обеспечивающая манипулирование строками и значениями, контейнеры и итерации , распределенные вычисления , циклы событий (циклы выполнения) и другие функции, которые не связаны напрямую с графическим пользовательским интерфейсом. Префикс «NS», используемый для всех классов и констант в платформе, взят из наследия Cocoa OPENSTEP, которое было совместно разработано NeXT и Sun Microsystems .
  • Комплект приложений ( AppKit ) является прямым потомком исходного набора приложений NeXTSTEP. Он содержит код программ, которые можно использовать для создания графических пользовательских интерфейсов и взаимодействия с ними . AppKit построен на основе Foundation и использует тот же NS . префикс
  • Core Data — это платформа сохранения объектов, включенная в Foundation и Cocoa и найденная в Cocoa.h. [1]

Ключевой частью архитектуры Cocoa является ее комплексная модель представлений. Он организован по традиционным принципам для среды приложений, но основан на модели рисования в формате PDF, предоставляемой Quartz . Это позволяет создавать собственный контент для рисования с использованием команд рисования, подобных PostScript , что также обеспечивает автоматическую поддержку принтера и т. д. Поскольку платформа Cocoa управляет всеми обрезками, прокруткой, масштабированием и другими задачами по рисованию графики, программист освобождается от реализации базовой инфраструктуры и может сосредоточиться на уникальных аспектах содержимого приложения.

Модель-представление-контроллер [ править ]

Команды Smalltalk в Xerox PARC в конечном итоге остановились на философии дизайна, которая привела к простоте разработки и многократному использованию кода. Эта концепция, получившая название модель-представление-контроллер (MVC), разбивает приложение на три набора взаимодействующих классов объектов:

  • Классы модели представляют данные и операции проблемной области (например, списки людей/отделов/бюджетов; документы, содержащие разделы/абзацы/сноски стилизованного текста).
  • Классы представлений реализуют визуальные представления и возможности для взаимодействия человека с компьютером (например, прокручиваемые сетки значков с надписями и всплывающие меню возможных операций).
  • Классы контроллеров содержат логику, которая отображает данные модели в виде представлений, сопоставляет инициируемые доступом действия пользователя с операциями модели и поддерживает состояние для синхронизации этих двух действий.

Дизайн Cocoa представляет собой справедливое, но не абсолютно строгое применение принципов MVC. В OpenStep большинство предоставляемых классов были либо классами представления высокого уровня (в AppKit), либо одним из ряда классов моделей относительно низкого уровня, таких как NSString. По сравнению с аналогичными системами MVC, OpenStep не имел мощного уровня модели. Например, ни один класс акций не представлял собой «документ». При переходе на Cocoa уровень модели был значительно расширен, введя ряд предварительно созданных классов для обеспечения функциональности, общей для настольных приложений.

В Mac OS X 10.3 Apple представила семейство классов NSController, которые обеспечивают предопределенное поведение для уровня контроллера. Эти классы считаются частью системы Cocoa Bindings , которая также широко использует такие протоколы, как Key-Value Observing и Key-Value Binding . Термин «привязка» относится к отношениям между двумя объектами, часто между представлением и контроллером. Привязки позволяют разработчику больше сосредоточиться на декларативных отношениях, а не на организации детального поведения.

С выходом Mac OS X 10.4 Apple еще больше расширила эту основу, представив платформу Core Data , которая стандартизирует отслеживание и сохранение изменений на уровне модели. По сути, платформа значительно упрощает процесс внесения изменений в данные приложения, отмены изменений при необходимости, сохранения данных на диск и их обратного чтения.

Обеспечивая поддержку инфраструктуры для всех трех доменов MVC, цель Apple состоит в том, чтобы уменьшить количество шаблонного или «связующего» кода, который приходится писать разработчикам, высвобождая ресурсы, которые можно потратить на функции, специфичные для приложения.

Позднее связывание [ править ]

В большинстве объектно-ориентированных языков вызовы методов физически представлены указателем на код в памяти. Это ограничивает разработку приложения, поскольку обработки команд необходимы определенные классы , обычно организованные в соответствии с шаблоном цепочки ответственности . Хотя Cocoa по большей части сохраняет этот подход, позднее связывание Objective-C обеспечивает большую гибкость.

В Objective-C методы представлены селектором строкой, описывающей вызываемый метод. метода реализация При отправке сообщения селектор отправляется в среду выполнения Objective-C, сопоставляется со списком доступных методов и вызывается . Поскольку селектор представляет собой текстовые данные, его можно сохранять в файл, передавать по сети или между процессами или манипулировать другими способами. Реализация метода просматривается во время выполнения, а не во время компиляции. За это есть небольшой штраф за производительность. [6] но позднее связывание позволяет одному и тому же селектору ссылаться на разные реализации.

Аналогичным образом, Cocoa предоставляет широко распространенный метод манипулирования данными, называемый кодированием ключ-значение (KVC). [7] Это позволяет искать или изменять часть данных или свойств объекта во время выполнения по имени. Имя свойства действует как ключ к значению. В традиционных языках такое позднее связывание невозможно. KVC обеспечивает большую гибкость конструкции. Тип объекта не обязательно должен быть известен, однако любое свойство этого объекта можно обнаружить с помощью KVC. Кроме того, расширяя эту систему с помощью того, что Cocoa называет наблюдением значения ключа автоматическая поддержка отмены и повтора (KVO), обеспечивается .

Поздняя статическая привязка — это вариант привязки, промежуточный между статической и динамической привязкой. Привязка имен до запуска программы называется статической ( ранней ); привязки, выполняемые во время работы программы, являются динамическими ( поздними или виртуальными ).

Богатые объекты [ править ]

Одной из наиболее полезных особенностей Cocoa являются мощные базовые объекты, предоставляемые системой. В качестве примера рассмотрим базовые классы NSString и NSAttributedString, которые предоставляют Юникода строки , и NSText system в AppKit, что позволяет программисту размещать строковые объекты в графическом интерфейсе.

NSTextи связанные с ним классы используются для отображения и редактирования строк. Коллекция задействованных объектов позволяет приложению реализовать что угодно: от простого однострочного поля ввода текста до полной многостраничной схемы макета текста с несколькими столбцами, с полными профессиональными типографскими функциями, такими как кернинг , лигатуры , обтекание текста произвольными формами . , вращение , полная поддержка Unicode и со сглаживанием глифов рендеринг . Макетом абзаца можно управлять автоматически или пользователем с помощью встроенного объекта « линейка », который можно прикрепить к любому текстовому представлению. Проверка орфографии происходит автоматически с использованием общесистемного набора языковых словарей. Встроена неограниченная поддержка отмены/повтора. Используя только встроенные функции, можно написать приложение текстового редактора всего за 10 строк кода. С новыми объектами контроллера это значение может упасть до нуля. Когда необходимы расширения, использование Cocoa Objective-C упрощает эту задачу. Objective-C включает концепцию « категорий », которая позволяет изменять существующий класс «на месте». Функциональность может быть реализована в категории без каких-либо изменений исходных классов в структуре или даже без доступа к ее исходному коду. В других распространенных языках та же задача требует создания нового подкласса, поддерживающего добавленные функции, а затем замены всех экземпляров исходного класса экземплярами нового подкласса.

Реализации и привязки [ править ]

Фреймворки Cocoa написаны на Objective-C . Java Привязки для фреймворков Cocoa (называемые мостом Java ) также были доступны с целью замены Objective-C более популярным языком. [8] но эти привязки были непопулярны среди разработчиков Cocoa, и семантика передачи сообщений Cocoa плохо переносилась на статически типизированный язык, такой как Java. [9] Потребность Cocoa в привязке во время выполнения означает, что многие ключевые функции Cocoa недоступны в Java. В 2005 году Apple объявила, что мост Java устарел, а это означает, что функции, добавленные в Cocoa в версиях macOS позже 10.4, не будут добавлены в программный интерфейс Cocoa-Java.

На Всемирной конференции разработчиков Apple (WWDC) 2014 компания Apple представила новый язык программирования под названием Swift , который призван заменить Objective-C. [10]

AppleScriptObjC [ править ]

Первоначально AppleScript Studio можно было использовать для разработки более простых приложений Cocoa. [11] Однако, что касается Snow Leopard, он устарел. Его заменил AppleScriptObjC, который позволяет программировать на AppleScript с использованием фреймворков Cocoa. [12]

Другие привязки [ править ]

Доступ к среде программирования Cocoa можно получить с помощью других инструментов с помощью механизмов моста , таких как PasCocoa , PyObjC , CamelBones , RubyCocoa и D /Objective-C Bridge.

Сторонние привязки, доступные для других языков, включают AppleScript , Clozure CL , Monobjc и NObjective ( C# ), Cocoa# (CLI), Cocodao и D /Objective-C Bridge, [13] [14] LispWorks , Object Pascal , CamelBones ( Perl ), PyObjC ( Python ), FPC PasCocoa ( Lazarus и Free Pascal ), RubyCocoa ( Ruby ). [15]

Реализация языка Ruby под названием MacRuby , которая устраняет необходимость в мостовом механизме, ранее была разработана Apple, а Nu — это Lisp -подобный язык, который напрямую использует объектную модель Objective-C и, таким образом, может использовать платформы Cocoa без необходимости привязка.

Другие реализации [ править ]

Существуют также реализации с открытым исходным кодом основных частей платформы Cocoa, такие как GNUstep и Cocotron. [16] которые позволяют разрабатывать кросс-платформенные приложения Cocoa для других операционных систем, таких как Microsoft Windows и Linux .

См. также [ править ]

Ссылки [ править ]

  1. ^ Перейти обратно: а б Обзор технологий Mac: платформы OS X. Разработчик.apple.com. Проверено 18 сентября 2013 г.
  2. ^ Амит Сингх (19 июня 2006 г.). Внутреннее устройство Mac OS X: системный подход . ISBN  0-321-27854-2 . Какао является важным наследием NeXT, на что указывает префикс «NS».
  3. ^ Мардесич, Джоди (14 апреля 1997 г.). «Мрачная нота в рапсодии Apple. Некогда лояльные авторы программного обеспечения опасаются новых ОС, поскольку приближается важная конференция» . Нет. Утренний финал. Сан-Хосе Меркьюри Ньюс. Архивировано из оригинала 6 марта 2016 года . Проверено 13 августа 2015 г.
  4. ^ Apple Inc. (10 мая 1999 г.), WWDC 1999 , получено 27 апреля 2024 г.
  5. ^ Гибридный мир . Цилиндр.be. Проверено 18 сентября 2013 г.
  6. ^ Wikibooks - Некоторые преимущества Objective-C
  7. ^ «Руководство по программированию кодирования значений ключа» . Проверено 27 сентября 2021 г.
  8. ^ Стив Клингспорн (2003). «Написание приложений Cocoa на Java» . МакТех . 19 (12).
  9. ^ «Использование Java Bridge» (PDF) . Apple Inc. Поскольку Java является строго типизированным языком, он требует больше информации о классах и интерфейсах, которыми он манипулирует во время компиляции. Поэтому, прежде чем использовать классы Objective-C в качестве классов Java, необходимо написать и скомпилировать их описание.
  10. ^ «Совершенно секретный язык Swift от Apple вырос в результате работы над поддержкой Objective-C, который теперь стремится заменить» .
  11. ^ «Руководство по программированию AppleScript Studio (не рекомендуется): об AppleScript Studio» . Apple, Inc. Проверено 20 ноября 2013 г.
  12. ^ «Примечания к выпуску AppleScriptObjC» . Apple, Inc. Проверено 20 ноября 2013 г.
  13. ^ Cocodao , мост для создания приложений Cocoa на языке D.
  14. ^ D/Objective-C Bridge , механизм привязки языка для Cocoa.
  15. ^ более обширный список реализаций
  16. ^ Cocotron , бесплатная программная реализация Cocoa.

Библиография [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 77FB158EDD1FDBEE32963A5B12FA10E6__1716727920
URL1:https://en.wikipedia.org/wiki/Cocoa_(API)
Заголовок, (Title) документа по адресу, URL1:
Cocoa (API) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)