Среда приложения Mac
OS X включает последние технологии для создания мощного и приложения забавы к использованию. Но технологий собой недостаточно для создания каждого приложения большим. То, что устанавливает приложение кроме его коллег, - то, как оно помогает пользователю достигнуть некоторой материальной цели. В конце концов, пользователи не собираются заботиться о том, какие технологии приложение использует, пока оно помогает им сделать то, что они должны сделать. Стоящее на пути приложение будет забытым, но тот, делающий работу (или игра) проще и больше забавы, будет помнившим.
Вы используете Какао для записи приложений для OS X. Какао предоставляет Вам доступ ко всем функциям OS X и позволяет Вам интегрировать свое приложение чисто с остальной частью системы. В этой главе рассматривается ключевых ролей OS X, помогающих Вам создать большие приложения. В частности эта глава описывает некоторые важные простые в употреблении технологии, представленные в OS X v10.7. Для более полного списка технологий, доступных в OS X, см. Технологический Обзор Mac.
Среда, разработанная для простоты использования
OS X стремится обеспечить среду, которая очевидна для пользователей и максимально проста в использовании. Путем создания трудных задач простыми и схождение с пути, система упрощает для пользователя быть творческой и провести меньше времени, волнуясь о шагах, должен был заставить компьютер работать. Конечно, упрощение задач означает, что Ваше приложение должно выполнить больше работы, но OS X обеспечивает справку в этом отношении также.
Поскольку Вы разрабатываете свое приложение, необходимо думать о задачах, что пользователи обычно выполняют и находят способы сделать их проще. OS X поддерживает мощные простые в употреблении функции и принципы разработки. Например:
Пользователям не придется сохранить их работу вручную. Модель документа в Какао предоставляет поддержку для того, чтобы сохранить основанные на файле документы пользователя без взаимодействия с пользователем; посмотрите, что Архитектура Документа Обеспечивает Много Возможностей бесплатно.
Во время входа в систему приложения должны восстановить рабочую среду пользователя. Какао предоставляет поддержку для архивации текущего состояния интерфейса приложения (включая состояние несохраненных документов) и восстановление того состояния во время запуска; посмотрите Сохранение Пользовательского интерфейса.
Приложения должны поддерживать автоматическое завершение так, чтобы пользователь никогда не выходил из них. Автоматическое завершение означает, что, когда пользователь закрывает окна приложения, приложение, кажется, выходит, но фактически просто перемещается в фон бесшумно. Преимущество состоит в том, что последующие запуски почти мгновенны, поскольку приложение просто пятится к переднему плану; посмотрите, что Автоматическое и Внезапное Завершение Приложений Улучшает Пользовательский Опыт
Необходимо рассмотреть обеспечение пользователей с иммерсивным, полноэкранным опытом путем реализации полноэкранной версии пользовательского интерфейса. Полноэкранный опыт устраняет внешние отвлекающие факторы и позволяет пользователю фокусироваться на их содержании; посмотрите Реализацию Полноэкранного Опыта.
Поддерживайте жесты сенсорной панели для надлежащих мер в Вашем приложении. Жесты обеспечивают простые ярлыки для общих задач и могут использоваться для дополнения существующих средств управления и команд меню. OS X предоставляет автоматическую поддержку для создания отчетов о жестах к Вашему приложению через нормальный механизм обработки событий; посмотрите Руководство по Обработке событий Какао.
Рассмотрите минимизацию или устранение взаимодействий пользователя с необработанной файловой системой. Вместо того, чтобы представлять целую файловую систему пользователю через открытое и сохранять панели, некоторые приложения, способом iPhoto и iTunes, могут обеспечить лучший пользовательский опыт путем представления содержания пользователя в упрощенном браузере, специально разработанном для содержания приложения. OS X использует четко определенную структуру файловой системы, позволяющую Вам помещать и находить файлы легко и включающую много технологий для доступа к тем файлам; посмотрите Файловую систему.
Для приложений, поддерживающих пользовательские типы документов, обеспечьте плагин Беглого взгляда так, чтобы пользователи могли просмотреть Ваши документы от за пределами Вашего приложения; см. Руководство по программированию Беглого взгляда.
Приложения должны поддерживать фундаментальные функции для пользовательского опыта OS X, делающие приложения изящными и интуитивными, такие как непосредственное управление и перетаскивание. Пользователи должны остаться под контролем, получить непротиворечивую обратную связь и быть в состоянии исследовать, потому что приложение является прощающим с обратимыми действиями; см. Инструкции по Интерфейсу пользователя OS X.
Все предыдущие функции поддерживаются Какао и могут быть включены с относительно небольшим усилием.
Сложная графическая среда
Высококачественная графика и анимация заставляют Ваше приложение выглядеть большим и могут передать большую информацию пользователю. Анимации в частности являются отличным способом обеспечить обратную связь об изменениях в Вашем пользовательском интерфейсе. Таким образом, поскольку Вы разрабатываете свое приложение, помните следующие идеи:
Используйте анимации, чтобы обеспечить обратную связь и передать изменения. Какао обеспечивает механизмы для создания сложных анимаций быстро и в AppKit и в Базовых платформах Анимации. Для получения информации о создании основанных на представлении анимаций посмотрите, что Какао Рисует Руководство. Для получения информации об использовании Базовой Анимации для создания анимаций см. Базовое Руководство по программированию Анимации.
Включайте версии с высокой разрешающей способностью своего искусства и графики. OS X автоматически загружает ресурсы изображения с высокой разрешающей способностью, когда выполнение приложения на экране, масштабный коэффициент которого больше, чем 1,0. Включая такое изображение ресурсы заставляет графику Вашего приложения выглядеть еще более резкой и более свежей на тех экранах более высокого разрешения.
Для получения информации о графических технологиях, доступных в OS X, посмотрите Уровень Носителей в Технологическом Обзоре Mac.
Низкоуровневые подробные данные среды выполнения
Когда Вы готовы начать писать фактический код, существует много технологий, доступных для создания жизни проще. OS X поддерживает все основные функции, такие как управление памятью, управление файлами, сети и параллелизм, что необходимо записать код. В некоторых случаях, тем не менее, OS X также предоставляет более сложные услуги (или определенные соглашения кодирования), который, когда сопровождается, может сделать запись Вашего кода еще проще.
На основе UNIX
OS X приводится в действие 64-разрядным ядром Маха, управляющим ресурсами процессора, памятью и другими низкоуровневыми способами поведения. Поверх ядра находится измененная версия операционной системы Berkeley Software Distribution (BSD), обеспечивающей интерфейсы, которые приложения могут использовать для взаимодействия с системой низшего уровня. Эта комбинация Маха и BSD предоставляет следующую поддержку системного уровня для Ваших приложений:
Вытесняющая многозадачность — Все процессы совместно используют CPU эффективно. Ядро планирует процессы в пути, гарантирующем, чтобы они все получили время, которое они должны выполнить. Даже фоновые приложения продолжают получать процессорное время для выполнения продолжающихся задач.
Защищенная память — Каждый процесс работает в его собственном защищенном пространстве памяти, предотвращающем процессы от случайного вмешательства друг с другом. (Приложения могут совместно использовать часть своего пространства памяти, чтобы реализовать быстрое межпроцессное взаимодействие, но взять на себя ответственность за синхронизацию и блокировку той памяти соответственно.)
Виртуальная память — 64-разрядные приложения имеют виртуальное адресное пространство приблизительно 18 эксабайт (18 миллиардов миллиардов байтов). (При создании 32-разрядного приложения сумма виртуальной памяти составляет только 4 ГБ.), Когда использование памяти приложения превышает сумму свободной физической памяти, система прозрачно пишет страницы в диск для создания большего количества комнаты. Выписанные страницы остаются на диске, пока они не необходимы в памяти снова или выходах приложения.
При сетях и Добрый день — OS X предоставляет поддержку для стандартных сетевых протоколов и служб в использовании сегодня. Сокеты BSD обеспечивают низкоуровневый механизм связи для приложений, но также существуют высокоуровневые интерфейсы. Добрый день упрощает пользователя, объединяющего опыт в сеть путем обеспечения динамического способа распространиться и соединиться с сетевыми службами по TCP/IP.
Для получения дальнейшей информации о базовой среде OS X, посмотрите Уровень Драйверов ядра и Драйверов устройств в Технологическом Обзоре Mac.
Параллелизм и поточная обработка
Каждый процесс начинается с единственным потоком выполнения и может создать больше потоков по мере необходимости. Несмотря на то, что можно создать потоки непосредственно с помощью POSIX и других высокоуровневых интерфейсов, для большинства типов работы лучше создать их косвенно использующий блочные объекты с Grand Central Dispatch (GCD) или объектами операции, технология параллелизма Какао, реализованная NSOperation
класс.
GCD и объекты операции являются альтернативой необработанным потокам, упрощающим или устраняющим многие проблемы, обычно связанные с потоковым программированием, такие как синхронизация и блокировка. В частности они определяют модель асинхронного программирования, в которой Вы указываете только работу, которая будет выполняться и порядок, в котором Вы хотите выполняемый. Система тогда обрабатывает утомительную работу, требуемую запланировать необходимые потоки и выполнить Ваши задачи максимально эффективно на текущих аппаратных средствах. Вы не должны использовать GCD или операции для работы, требующей обработки уязвимых данных времени (такие как воспроизведение аудио или воспроизведение видео), но можно использовать их для большинства других типов задач.
Для получения дополнительной информации об использовании GCD и объектов операции для реализации параллелизма в приложениях см. Руководство по программированию Параллелизма.
Файловая система
Файловая система в OS X структурирована для обеспечения лучшего опыта для пользователей. Вместо того, чтобы представлять целую файловую систему пользователю, Средство поиска скрывает любые файлы и каталоги, которые средний пользователь не должен должен быть использовать, такие как содержание низкоуровневых каталогов UNIX. Это сделано, чтобы обеспечить более простой интерфейс для конечного пользователя (и только в местах как Средство поиска и открытое и сохранить панели). Приложения могут все еще получить доступ к любым файлам и каталогам, для которых у них есть допустимые полномочия, независимо от того, скрыты ли они Средством поиска.
При создании приложений необходимо понять и следовать соглашениям, связанным с файловой системой OS X. Знание, куда поместить файлы и как вытащить информацию из файловой системы, гарантирует лучший пользовательский опыт.
Несколько каталогов важного приложения
Файловая система OS X организована в пути, собирающем в группу связанные файлы и данные в определенных местах. Каждый файл в файловой системе имеет свое место, и приложения должны знать, куда поместить файлы, они создают. Это особенно важно, если Вы распределяете свое приложение через App Store, ожидающий, что Вы поместите файлы данных своего приложения в определенные каталоги.
Таблица 1-1 перечисляет каталоги, с которыми обычно взаимодействуют приложения. Некоторые из этих каталогов в корневом каталоге, который является или корневым каталогом пользователя или, если приложение принимает Тестовую среду приложения, контейнерный каталог приложения, как описано в Тестовой среде приложения и XPC. Поскольку фактические пути могут отличаться на основе этих условий, используйте URLsForDirectory:inDomains:
метод NSFileManager
класс для получения фактического пути к каталогу. Можно тогда добавить любой пользовательский каталог и информацию об имени файла к возвращенному объекту URL завершить путь.
Каталог | Описание |
---|---|
Каталог приложений | Это - каталог установки для Вашего комплекта приложений. Путь для глобального Каталога приложений Для получения дополнительной информации о структуре Вашего комплекта приложений и как Вы определяете местоположение ресурсов, посмотрите Комплект приложений OS X. |
Корневой каталог | Конфигурация Вашего приложения определяет расположение корневого каталога, замеченного Вашим приложением:
Для получения пути к корневому каталогу используйте |
Каталог Library | Каталог Library является каталогом верхнего уровня для того, чтобы хранить частные связанные с приложением данные и предпочтения. Существует несколько каталогов Library, рассеянных по всей системе, но необходимо всегда использовать тот, расположенный в текущем корневом каталоге. Не храните файлы непосредственно на верхнем уровне каталога Library. Вместо этого сохраните их в одном из определенных подкаталогов, описанных в этой таблице. В OS X v10.7 и позже, Средство поиска скрывает каталог Library в домашней папке пользователя по умолчанию. Поэтому Вы никогда не должны хранить файлы в этом каталоге, что Вы хотите пользователя к доступу. Для получения пути к этому каталогу используют |
Каталог Application Support | Каталог Application Support - то, где Ваше приложение хранит любой тип файла, поддерживающего приложение, но не требующегося для приложения работать, такие как шаблоны документов или конфигурационные файлы. Файлы должны быть специфичными для приложения, но никогда не должны хранить пользовательские данные. Этот каталог расположен в каталоге Library. Никогда не храните файлы на верхнем уровне этого каталога: Всегда помещайте их в подкаталог, названный по имени Вашего приложения или компании. Если ресурсы применяются ко всем пользователям в системе, таким как шаблоны документов, размещают их в |
Каталог Caches | Каталог Caches - то, где Вы храните файлы кэша и другие временные данные, которые Ваше приложение может воссоздать по мере необходимости. Этот каталог расположен в каталоге Library. Никогда не храните файлы на верхнем уровне этого каталога: Всегда помещайте их в подкаталог, названный по имени Вашего приложения или компании. Ваше приложение ответственно за вычищение файлов данных кэша, когда они больше не необходимы. Система не удаляет файлы из этого каталога. Для получения пути к этому каталогу используют |
Каталог Movies | Каталог Movies содержит видеофайлы пользователя. Для получения пути к этому каталогу используют |
Каталог Music | Каталог Music содержит музыкальные файлы пользователя и аудиофайлы. Для получения пути к этому каталогу используют |
Каталог Pictures | Каталог Pictures содержит изображения и фотографии пользователя. Для получения пути к этому каталогу используют |
Временный каталог | Каталог Temporary - то, где Вы храните файлы, которые не должны сохраняться между запусками Вашего приложения. Вы обычно используете этот каталог для рабочих файлов или других типов недолгих файлов данных, не связанных с персистентными данными Вашего приложения. Этот каталог обычно скрыт от пользователя. Ваше приложение должно удалить файлы из этого каталога, как только это сделано с ними. Система может также произвести чистку непрекращающихся файлов от этого каталога при системном запуске. Для получения пути к этому каталогу используют |
Перечисление 1-1 показывает пример того, как получить основной путь к Application Support
каталог и затем добавляет каталог пользовательского приложения к нему.
Перечисление 1-1 , Получающее путь к Application Support
каталог
NSFileManager* fileManager = [NSFileManager defaultManager]; |
NSURL* appSupportDir = nil; |
NSArray *urls = [fileManager URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask]; |
if ([paths count] > 0) { |
appSupportDir = [[urls objectAtIndex:0] URLByAppendingPathComponent:@"com.example.MyApp"]; |
} |
Для получения дополнительной информации о том, как получить доступ к файлам в известных системных каталогах, см. Руководство по программированию Файловой системы.
Координирование доступа к файлу с другими процессами
В OS X другие процессы могут иметь доступ к тем же файлам, которые делает Ваше приложение. Поэтому при работе с файлами, необходимо использовать интерфейсы координации файла, представленные в OS X v10.7, чтобы быть уведомленными, когда другие процессы (включая Средство поиска) пытаются считать или изменить, регистрирует приложение, в настоящее время использует. Например, когда Ваше приложение принимает хранение iCloud, координирование доступа к файлу критически важно.
APIs координации файла позволяет Вам утверждать владение по файлам и каталогам, о которых заботится Ваше приложение. Любому времени другой процесс пытается коснуться одного из тех элементов, Ваше приложение, дают шанс ответить. Например, когда приложение пытается считать содержание документа, Ваше приложение редактирует, можно записать несохраненные изменения в диске, прежде чем другому процессу позволят сделать его чтение.
Используя хранение документов iCloud, например, необходимо включить координацию файла, потому что многократные приложения могут получить доступ файлам документов в iCloud. Самый простой способ включить координацию файла в Ваше приложение состоит в том, чтобы использовать NSDocument
класс, обрабатывающий все связанное с файлом управление для Вас. См. Основанное на документе Руководство по программированию Приложения для Mac.
С другой стороны, если Вы пишете стиль библиотеки (или «обувная коробка») приложение, необходимо использовать интерфейсы координации файла непосредственно, как описано в Руководстве по программированию Файловой системы.
Взаимодействие с файловой системой
Диски в компьютерах Macintosh отформатированы с помощью HFS + файловая система по умолчанию. Однако компьютеры Macintosh могут взаимодействовать с дисками, использующими другие форматы, таким образом, Вы никогда не должны кодировать в частности ни к какой файловой системе. Таблица 1-2 перечисляет некоторые основные атрибуты файловой системы, которые Вы, возможно, должны рассмотреть в Вашем приложении и как необходимо обработать их.
Атрибут | Описание |
---|---|
Чувствительность к регистру | HFS + файловая система нечувствителен к регистру, но также и сохраняет случай. Поэтому при указании имен файлов и каталогов в коде, лучше принимать чувствительность к регистру. |
Конструкция пути | Создайте пути с помощью методов |
Атрибуты файла | Много связанных с файлом атрибутов могут быть получены с помощью |
Полномочия файла | Полномочиями файла управляют с помощью списков управления доступом полномочий BSD и (ACLs). Система использует ACLs, когда это возможно, для указания точных полномочий для файлов и каталогов, но это отступает к использованию полномочий BSD, когда не указаны никакие ACLs. По умолчанию любые файлы, которые создает Ваше приложение, принадлежат текущему пользователю и даны надлежащие полномочия. Таким образом Ваше приложение должно всегда быть в состоянии считать и записать файлы, которые оно создает явно. Кроме того, песочница приложения может позволить ему получать доступ к другим файлам в особых ситуациях. Для получения дополнительной информации о песочнице, посмотрите Тестовую среду приложения и XPC. |
Отслеживание изменений файла | Приложения, которые не могут использовать интерфейсы Координации Файла (см. Доступ к файлу Координирования с Другими Процессами) для отслеживания изменений в файлах и каталогах могут использовать API FSEvents вместо этого. Этот API обеспечивает интерфейс низшего уровня для отслеживания взаимодействий файловой системы и доступен в OS X v10.5 и позже. Для получения информации о том, как использовать API FSEvents, см. Руководство по программированию Событий Файловой системы. |
Требования использования файловой системы для App Store Mac
Для продвижения более непротиворечивого пользовательского опыта заявки, поданные к App Store Mac, должны неотступно следовать за определенными правилами, где они пишут файлы. Пользователи могут быть смущены, когда приложения вызывают неожиданные побочные эффекты в файловой системе (например, храня базы данных в папке Documents пользователя, храня файлы в папке Library пользователя, узнаваемо не связанные с Вашим приложением, храня пользовательские данные в папке Library пользователя, и т.д.).
Ваше приложение должно придерживаться следующих требований:
Можно использовать платформы Apple, такие как Пользовательские Значения по умолчанию, Календарное Хранилище и Адресная книга, которые неявно пишут в файлы в определенных расположениях, включая расположения, к которым приложению не позволяют получить доступ непосредственно.
Ваше приложение может записать во временные пути получение использования надлежащих интерфейсов программирования Apple, такой как
NSTemporaryDirectory
функция.Ваше приложение может записать в следующие каталоги:
~/Library/Application Support/<app-identifier>
~/Library/<app-identifier>
~/Library/Caches/<app-identifier>
где <идентификатор приложения> является идентификатором пакета Вашего приложения, его именем или именем Вашей компании. Это должно точно соответствовать то, что находится в Подключении iTunes для приложения.
Всегда используйте интерфейсы программирования Apple такой в качестве
URLsForDirectory:inDomains:
функция для определения местоположения этих путей, а не жесткого кодирования их. Для получения дополнительной информации см. Руководство по программированию Файловой системы.Если Ваше приложение управляет библиотеками изображений, музыки или фильмов, приложение может также записать в следующие каталоги:
~/Pictures/<app-identifier>
~/Music/<app-identifier>
~/Movies/<app-identifier>
Если пользователь явно принимает решение сохранить данные в альтернативном расположении (использующий Сохранение В качестве диалогового окна), Ваше приложение может записать в выбранное расположение.
Безопасность
Технологии безопасности в OS X помогают Вам охранять уязвимые данные, создаваемые или управляемые Вашим приложением, и справка минимизирует ущерб, нанесенный успешными атаками от враждебного кода. Эти технологии влияют, как Ваше приложение взаимодействует с системными ресурсами и файловой системой.
Тестовая среда приложения и XPC
Вы защищаете свое приложение от атаки из вредоносного программного обеспечения следующим методы, рекомендуемые в Безопасном Руководстве по Кодированию. Но атакующий должен только найти единственную дыру в Вашей обороноспособности, или в любой из платформ и библиотек, против которых Вы соединяетесь, для получения контроля над приложением вместе со всеми его полномочиями.
Если вредоносный код использует Ваше приложение, тестовая среда приложения обеспечивает последнюю строку защиты против украденного, поврежденного или данных удаленного пользователя. Тестовая среда приложения также минимизирует ущерб от кодирования ошибок. Его стратегия является двукратной:
Тестовая среда приложения позволяет Вам описать, как Ваше приложение взаимодействует с системой. Система тогда предоставляет Вашему приложению доступ, это должно было сделать свое задание, и не больше. Для Вашего приложения для обеспечения высшего уровня включения ущерба наиболее успешная практика должна принять самую трудную возможную песочницу.
Тестовая среда приложения позволяет пользователю прозрачно предоставлять Вашему приложению дополнительный доступ посредством Открытого и Сохранять диалоговые окна, перетаскивание и другое знакомое взаимодействие с пользователем.
Вы описываете взаимодействие своего приложения с системой посредством установки прав в XCode. Право является парой ключ/значение, определенной в файле списка свойств, присуждающем определенную возможность или право доступа к цели. Например, существуют дающие право ключи, чтобы указать, что для Вашего приложения нужен доступ к камере, сети и пользовательским данным, таким как Адресная книга. Для получения дополнительной информации на всех правах, доступных в OS X, посмотрите Дающую право Ключевую Ссылку.
При принятии Тестовой среды приложения система обеспечивает специальный каталог для использования приложением — и только приложением — вызвал контейнер. Ваше приложение освободило доступ для чтения-записи к контейнеру. Весь OS X новаторский APIs, выше уровня POSIX, относительно контейнера вместо к корневому каталогу пользователя. Другие поигравшие в песочнице приложения не имеют никакого доступа к контейнеру Вашего приложения, как описано далее в Подписывании кода.
Ваше поигравшее в песочнице приложение может пути доступа за пределами своего контейнера следующими тремя способами:
В определенном направлении пользователя
Вами конфигурирующий Ваше приложение с правами для определенных расположений файловой системы, таких как папка Movies
Когда путь находится в любом из определенных каталогов, которые являются читаемым миром
Технологию безопасности OS X, взаимодействующую с пользователем для расширения песочницы, вызывают Блоком питания. Блок питания не имеет никакого API. Когда, например, Вы используете, Ваше приложение использует Блок питания прозрачно NSOpenPanel
и NSSavePanel
классы, или когда пользователь использует перетаскивание с Вашим приложением.
Некоторые работы приложения, более вероятно, будут целями злонамеренной эксплуатации. Примерами является парсинг данных, полученных по сети и декодированию видеокадров. При помощи XPC можно улучшить эффективность включения ущерба, предлагаемого Тестовой средой приложения путем разделения таких потенциально опасных действий на их собственные адресные пространства.
XPC является технологией межпроцессного взаимодействия OS X что Тестовая среда приложения дополнений путем включения разделения полномочия. Разделение полномочия, в свою очередь, стратегия развития, в которой Вы делите приложение на части согласно доступу системного ресурса, в котором нуждается каждая часть. Части компонента, которые Вы создаете, вызывают службами XPC. Для получения дополнительной информации при принятии XPC, см. Руководство по программированию Демонов и Служб.
Для полного объяснения Тестовой среды приложения и как использовать его, считайте Руководство по проектированию Тестовой среды приложения.
Подписывание кода
OS X использует технологию безопасности, которая, как известно как подписывание кода, позволила Вам сертифицировать, что Ваше приложение действительно создавалось Вами. После того, как приложение является подписанным кодом, система может обнаружить любое изменение в приложении — представлено ли изменение случайно или вредоносным кодом. Различные технологии безопасности, включая Тестовую среду приложения и родительский контроль, зависят от подписывания кода.
В большинстве случаев можно полагаться на автоматическое подписывание кода XCode, требующее только, чтобы Вы указали идентификационные данные подписывания кода в настройках сборки для Вашего проекта. Шаги для взятия описаны в Подписывании кода Приложение в Руководстве по Потоку операций Инструментов для Mac. Если необходимо включить подписывание кода в автоматизированную систему сборки, или если Вы соединяете свое приложение против сторонних платформ, обратитесь к процедурам, описанным в Руководстве по Подписыванию кода.
При принятии Тестовой среды приложения Вы должны элемент кода Ваше приложение. Это вызвано тем, что права (включая специальное право, включающее Тестовую среду приложения) встроены в подпись кода приложения.
OS X осуществляет связь между контейнером приложения и подписью кода приложения. Это важное средство защиты гарантирует, что никакое другое поигравшее в песочнице приложение не может получить доступ к Вашему контейнеру. Механизм работает следующим образом: После того, как система создает контейнер для приложения, каждый раз приложения с тем же пакетом запуски ID, система проверяет, что подпись кода приложения соответствует подпись кода, ожидаемую контейнером. Если система обнаруживает несоответствие, она препятствует тому, чтобы запустилось приложение.
Для полного объяснения подписывания кода в контексте Тестовой среды приложения считайте Тестовую среду приложения подробно в Руководстве по проектированию Тестовой среды приложения.
Цепочка для ключей
Цепочка для ключей является безопасным, зашифрованным контейнером для хранения паролей пользователя и других секретов. Это разработано, чтобы помочь пользователю управлять их многократным именем для входа в систему, каждым с его собственным ID и паролем. Необходимо всегда использовать цепочку для ключей для хранения чувствительных учетных данных для приложения.
Для больше на цепочке для ключей, посмотрите Понятия Keychain Services в Руководстве по программированию Keychain Services.