iOS 5.0

Эта статья суммирует ключевые связанные с разработчиком функции, представленные в iOS 5.0. Эта версия операционной системы работает на текущих основанных на iOS устройствах. В дополнение к описанию ключевых новых функций эта статья перечисляет документы, описывающие те функции более подробно.

Для последнего экстренного сообщения и информации об известных проблемах, см. информацию о версии iOS 5.0. Для полного списка нового APIs, добавленного в iOS 5.0, посмотрите iOS 5.0 API Diffs.

Хранение iCloud APIs

Хранение iCloud APIs позволило Вашему приложению записать пользовательские документы и данные к центральному расположению и получить доступ к тем элементам от всех компьютеров и устройств на iOS пользователя. Создание документов пользователя повсеместное использование, iCloud означает, что пользователь может просмотреть или отредактировать те документы от любого устройства, не имея необходимость синхронизировать или передавать файлы явно. Хранить документы в учетной записи iCloud пользователя также обеспечивает уровень безопасности для того пользователя. Даже если пользователь теряет устройство, документы о том устройстве не потеряны, если они находятся в хранении iCloud.

Существует два способа, которыми приложения могут использовать в своих интересах хранение iCloud, каждый из которых имеет различное намеченное использование:

Большинство приложений будет использовать хранение документов iCloud для совместного использования документов из учетной записи iCloud пользователя. Это - функция, о которой думают пользователи, когда они думают о хранении iCloud. Пользователь заботится о том, совместно используются ли документы через устройства и видят и управляют теми документами от данного устройства. Напротив, хранилище данных значения ключа iCloud не что-то, что пользователь видел бы. Это - путь к Вашему приложению для совместного использования мелких сумм данных (до общего количества на приложение 1 МБ и максимума 1 024 ключей) с другими экземплярами себя. Приложения могут использовать эту функцию, чтобы хранить важную информацию состояния. Приложение журнала могло бы сохранить проблему и страницу, которую пользователь прочитал в последний раз, в то время как приложение акций могло бы сохранить символы акций, пользователь отслеживает.

Для получения информации о том, как использовать документ iCloud и хранение данных значения ключа, см. Руководство по проектированию iCloud.

Резервное копирование iCloud

Пользователи могут теперь решить иметь свои приложения и данные приложения, скопированные непосредственно в их учетную запись iCloud, упростив соответствующим приложениям к их новому состоянию. Копирование данные в iCloud упрощает для пользователя переустанавливать те данные к новому или существующему устройству на iOS. Однако, потому что сумма пространства в учетной записи iCloud пользователя ограничивается, приложения должны быть еще более выборочными о том, где они хранят файлы.

Размещение файлов в корневом каталоге Вашего приложения определяет то, что копируется и что не делает. Что-либо, что было бы поддержано до компьютера пользователя, также копируется с помощью беспроводных технологий к iCloud. Таким образом, все в Documents каталог и большинство (но не все) Вашего приложения Library каталог. Для минимизации объема данных, сохраненного в учетной записи iCloud пользователя, разработчики призваны вставить больше файлов Library/Caches каталог, особенно если те файлы могут быть легко воссозданы или получены в другом отношении.

Для получения информации о котором каталоги копируются, и для получения информации о хранении документов iCloud, видят Руководство по программированию Приложения для iOS.

Автоматический подсчет ссылок

Automatic Reference Counting (ARC) является функцией уровня компилятора, упрощающей процесс управления временами жизни объектов Objective C. Вместо Вас имеющий необходимость помнить, когда сохранить или выпустить объект, ARC оценивает пожизненные требования Ваших объектов и автоматически вставляет надлежащие вызовы метода во время компиляции.

../Art/ARC_design_final.gif

Чтобы быть в состоянии поставить эти функции, ARC налагает некоторые ограничения — прежде всего осуществляющий некоторые методы наиболее успешной практики и запрещающий некоторые другие методы:

ARC призывает Вас думать с точки зрения графов объектов, и отношения между объектами, а не с точки зрения сохраняют и выпускают. Поэтому ARC представляет новые пожизненные спецификаторы для объектов, включая обнуление слабых ссылок. Значение слабой ссылки обнуления автоматически установлено в nil . Если объект, на который это указывает освобожден, существуют спецификаторы для переменных, и новые weak и strong заявленные атрибуты свойства, как проиллюстрировано в следующих примерах:

// The following declaration is a synonym for: @property(retain) MyClass *myObject;
@property(strong) MyClass *myObject;
 
// The following declaration is similar to "@property(assign) MyOtherClass *delegate;"
// except that if the MyOtherClass instance is deallocated,
// the property value is set to nil instead of remaining as a dangling pointer
@property(weak) MyOtherClass *delegate;

XCode обеспечивает инструменты миграции, чтобы помочь преобразовать существующие проекты использовать ARC. Для получения дополнительной информации о том, как выполнить эту миграцию, посмотрите Новые функции и возможности в XCode. Для получения дополнительной информации о ARC самостоятельно, посмотрите Переход к Информации о версии ARC.

Раскадровки

Раскадровки являются новым способом определить пользовательский интерфейс Вашего приложения. В прошлом Вы использовали файлы пера для определения пользовательского интерфейса один контроллер представления за один раз. Файл раскадровки получает Ваш весь пользовательский интерфейс в одном месте и позволяет Вам определить и отдельные контроллеры представления и переходы между теми контроллерами представления. В результате раскадровки получают поток Вашего полного пользовательского интерфейса в дополнение к содержанию, которое Вы представляете.

При создании новых приложений шаблоны XCode прибывают предварительно сконфигурированные для использования раскадровок. Для других приложений процесс для использования раскадровок следующие:

  1. Сконфигурируйте свое приложение Info.plist файл для использования раскадровок:

    • Добавьте UIMainStoryboardFile ключ и набор его значение к имени Вашего файла раскадровки.

    • Удалите существующее NSMainNibFile ключ. (Раскадровки заменяют основной файл пера.)

  2. Создайте и сконфигурируйте файл раскадровки в XCode; посмотрите Файлы Раскадровки Создания.

  3. Обновите свои контроллеры представления для обработки переходов раскадровки; посмотрите Подготовку к Переходу к Новому Контроллеру Представления.

  4. Если когда-нибудь необходимо представлять контроллер представления вручную (возможно, для поддержки связанных с движением событий), используйте классы раскадровки, чтобы получить и представить надлежащий контроллер представления; посмотрите Контроллеры Представления Раскадровки Представления Программно.

Приложения могут использовать единственный файл раскадровки для хранения всех их контроллеров представления и представлений. Во время изготовления Интерфейсный Разработчик берет содержание файла раскадровки и делит его на дискретные части, которые могут быть загружены индивидуально для лучшей производительности. Ваше приложение никогда не должно управлять этими частями непосредственно, все же. Все, что необходимо сделать, объявляют основную раскадровку в приложении Info.plist файл. UIKit обрабатывает остальных.

Создание файлов раскадровки

Вы используете Интерфейсного Разработчика для создания файлов раскадровки для приложения. Для большинства приложений нужен только один файл раскадровки, но можно создать многократные файлы раскадровки, если Вы хотите. Каждому файлу раскадровки знали контроллер представления как начальный контроллер представления. Этот контроллер представления представляет точку входа в раскадровку. Например, в основном файле раскадровки Вашего приложения, начальный контроллер представления был бы первым контроллером представления, представленным Вашим приложением.

Каждый контроллер представления в файле раскадровки управляет единственной сценой. Для приложений для iPhone сцена управляет ценностью одного экрана содержания, но для приложений для iPad содержание от многократных сцен может быть на экране одновременно. Для добавления новых сцен к файлу раскадровки перетащите контроллер представления от библиотеки до холста раскадровки. Можно тогда добавить средства управления и представления к представлению контроллера представления, как Вы были бы для файла пера. И как прежде, можно сконфигурировать выходы и действия между контроллером представления и его представлениями.

Когда Вы хотите перейти от одного контроллера представления до другого, Щелчок управления кнопка, ячейка табличного представления, или другой триггер возражает в одном контроллере представления, и перетащить к контроллеру представления для различной сцены. Перетаскивание между контроллерами представления создает переход, появляющийся в Интерфейсном Разработчике как конфигурируемый объект. Переходы поддерживают все те же типы переходов, доступных в UIKit, такие как модальные переходы и переходы навигации. Можно также определить пользовательские переходы и переходы, заменяющие один контроллер представления другим.

Для получения дополнительной информации об использовании Интерфейсного Разработчика для конфигурирования файлов раскадровки посмотрите Новые функции и возможности в XCode.

Подготовка перейти к новому контроллеру представления

Каждый раз, когда пользователь инициировал переход в текущей сцене, время выполнения раскадровки вызывает prepareForSegue:sender: метод контроллера текущего представления. Этот метод дает контроллеру текущего представления возможность передать любые необходимые данные контроллеру представления, собирающемуся быть выведенным на экран. При реализации классов контроллера представления необходимо переопределить этот метод и использовать его для обработки этих переходов.

Для получения дополнительной информации о реализации методов UIViewController класс, посмотрите Ссылку класса UIViewController.

Представление контроллеров представления раскадровки программно

Несмотря на то, что время выполнения раскадровки обычно обрабатывает переходы между контроллерами представления, можно также инициировать переходы программно от кода. Вы могли бы сделать так, когда не возможно установить переход полностью в Интерфейсном Разработчике — например, когда выполнение так включает события акселерометра использования для инициирования перехода. Существует несколько опций для перехода к новому контроллеру представления:

  • Если файл раскадровки содержит существующий переход между контроллером текущего представления и целевым контроллером представления (возможно, инициированный некоторым другим управлением в контроллере представления), можно инициировать тот переход программно с помощью performSegueWithIdentifier:sender: метод UIViewController.

  • Если нет никакого перехода между контроллерами представления, но целевой контроллер представления определяется в файле раскадровки, сначала загрузите контроллер представления программно с помощью instantiateViewControllerWithIdentifier: метод UIStoryboard. Тогда представьте контроллер представления с помощью любого из существующих программируемых средних значений, такой как путем продвижения его на штабеле навигации.

  • Если целевой контроллер представления не находится в файле раскадровки, создайте его программно и представьте его, как описано в поле зрения Руководство по программированию Контроллера для iOS.

Поддержка киоска

Ньюсстэнд предоставляет центральное место пользователям для чтения журналов и газет. Издатели, хотящие поставить их журнал и газетное содержание через Ньюсстэнда, могут создать свои собственные приложения для iOS с помощью платформы Ньюсстэнда Кита (NewsstandKit.framework), несмотря на то, что так не требуется выполнение. Большое преимущество платформы Ньюсстэнда Кита, однако, состоит в том, что можно использовать ее для инициирования фоновых загрузок нового журнала и газетных проблем. Когда новое содержание доступно, после запуска загрузки система обрабатывает работу загрузки и уведомляет приложение.

В отличие от других приложений для iOS, приложения Киоска появляются только в самом Киоске, не в домашнем экране пользователя. И вместо того, чтобы вывести на экран значок приложения, приложение обычно выводит на экран покрытие их новой проблемы с некоторыми дополнительными украшениями, предоставленными Киоском. Когда пользователь касается того искусства покрытия, Ваши запуски приложения обычно для представления текущей проблемы или любых прошлых номеров, которые были загружены и все еще доступны.

Создание приложения, использующего Ньюсстэнда Кита, требует некоторого взаимодействия между реальным приложением и серверами содержания, которыми Вы управляете. Когда новое содержание доступно, обычно с помощью уведомления нажатия, Ваши серверы ответственны за уведомление приложения. Если Ваше приложение Ньюсстэнда включает UIBackgroundModes ключ с newsstand-content значение в Info.plist файл, Ваше приложение Киоска запускается в фоновом режиме так, чтобы это могло начать загружать последнюю проблему. Самим процессом загрузки управляет система, уведомляющая Ваше приложение, когда содержание полностью загружается и доступно.

Когда Ваш сервер предупреждает Ваше приложение новой проблемы, что сервер должен включать content-available свойство (со значением 1) в полезной нагрузке JSON. Это свойство говорит системе, что должно запустить Ваше приложение так, чтобы это могло начать загружать новую проблему. Приложения запущены и предупреждены к новым проблемам один раз в 24-часовой период самое большее, несмотря на то, что, если Ваше приложение работает, когда уведомление поступает, оно может начать загружать содержание сразу.

Когда та проблема доступна, в дополнение к Вашему содержанию обеспечения сервера для каждой новой проблемы это должно также обеспечить искусство покрытия для представления в Киоске. Это искусство покрытия выведено на экран вместо значка приложения по умолчанию, указанного Специфичными для киоска значками в CFBundleIcons ключ Вашего приложения Info.plist файл. Искусство покрытия дает пользователям больше визуального индикатора, что новая проблема доступна. Ваше приложение может также добавить значок к новым проблемам.

Для получения информации о классах Вы используете, чтобы управлять загрузками Киоска, видеть Ссылку Платформы NewsstandKit. Для получения информации о том, как использовать уведомления нажатия, чтобы уведомить Ваши приложения, видеть Локальное и Удаленное Руководство по программированию Уведомления. Для получения дополнительной информации об установке подписок Киоска, см. Руководство по программированию Закупки В приложении.

Улучшения AirPlay

AirPlay позволяет пользовательскому потоковому аудио и видео с основанного на iOS устройства на Поддерживающие трансляцию устройства, такие как телевизоры и аудиосистемы. В iOS 5 разработчики могут теперь использовать AirPlay для представления содержимого приложения на соседнем Apple TV 2. Пользователи могут теперь зеркально отразить содержание iPad 2 к использованию Apple TV AirPlay для любого приложения. И разработчики, хотящие вывести на экран различное содержание (вместо того, чтобы зеркально отразить) могут присвоить новый объект окна любому UIScreen объекты соединились с iPad 2 через AirPlay.

Кроме того, можно теперь использовать в своих интересах AirPlay следующими способами:

Для получения дополнительной информации о поставке содержания по AirPlay и форматов носителя поддержки, см. Обзор AirPlay.

Новые платформы

В iOS 5.0 существует несколько новых платформ, которые необходимо исследовать.

Платформа GLKit

Платформа GLKit (GLKit.framework) содержит ряд базируемых служебных классов Objective C, упрощающих усилие, требуемое создать приложение OpenGL ES 2.0. GLKit предоставляет поддержку для четырех ключевых областей разработки приложений:

  • GLKView и GLKViewController классы обеспечивают стандартную реализацию OpenGL поддерживающее ES представление и связанный цикл рендеринга. Представление управляет базовым объектом кадрового буфера от имени приложения; Ваше приложение просто рисует к нему.

  • GLKTextureLoader класс обеспечивает преобразование изображения и загружающиеся подпрограммы к Вашему приложению, позволяя ему автоматически загрузить изображения текстуры в Ваш контекст. Это может загрузить текстуры синхронно или асинхронно. При загрузке текстур асинхронно, приложение обеспечивает блок обработчика завершения, который вызовут, когда текстура загружается в контекст.

  • Платформа GLKit обеспечивает реализации вектора, матрицы, и кватернионов, а также матричной работы штабеля для обеспечения той же функциональности, найденной в OpenGL ES 1.1.

  • GLKBaseEffect, GLKSkyboxEffect, и GLKReflectionMapEffect классы обеспечивают конфигурируемые графические программы построения теней, реализующие обычно используемые графические операции. В частности GLKBaseEffect класс реализует освещение и материальную модель, найденную в спецификации OpenGL ES 1.1, упрощая усилие, требуемое переместить приложение от OpenGL ES 1.1 до OpenGL ES 2.0.

Для получения информации о классах платформы GLKit см. Ссылку Платформы GLKit.

Базовая платформа изображения

Базовая платформа Изображения (CoreImage.framework) обеспечивает мощный набор встроенных фильтров для управления видеоизображениями и неподвижными изображениями. Можно использовать встроенные фильтры для всего от простых операций (как исправление и исправление фотографий) к более усовершенствованным операциям (как поверхность и выявление признаков). Преимущество использования этих фильтров состоит в том, что они работают неразрушающим способом так, чтобы Ваши исходные изображения никогда не были изменены непосредственно. Кроме того, Базовое Изображение использует в своих интересах доступный CPU и вычислительную мощность GPU, чтобы гарантировать, что операции быстры и эффективны.

CIImage класс обеспечивает доступ к стандартному набору фильтров, которые можно использовать для повышения качества фотографии. Для создания других типов фильтров можно создать и сконфигурировать a CIFilter объект для надлежащего типа фильтра.

Для получения информации о классах и фильтрах Базовой платформы Изображения, посмотрите Базовый Ссылочный Набор Изображения.

Платформа Twitter

Платформа Twitter (Twitter.framework) предоставляет поддержку для того, чтобы отправить запросы Twitter от имени пользователя и для того, чтобы составить и отправить твиты. Для запросов платформа обрабатывает часть аутентификации пользователя запроса на Вас и обеспечивает шаблон для создания части HTTP запроса. (Обратитесь к Программному интерфейсу Твиттера для заполнения содержания запроса.) Состав твитов выполняется с помощью TWTweetComposeViewController класс, который является контроллером представления, который Вы отправляете со своим предложенным содержанием твита. Этот класс дает пользователю шанс отредактировать или изменить твит прежде, чем отправить его.

Пользователи управляют, позволяют ли приложению связаться с Twitter на их Настройках использования имени. Платформа Twitter также работает в сочетании с платформой Учетных записей (Accounts.framework) получить доступ к учетной записи пользователя.

Для получения информации о классах платформы Twitter посмотрите Ссылку Платформы Twitter. Для получения информации о платформе Учетных записей посмотрите Платформу Учетных записей.

Платформа учетных записей

Платформа Учетных записей (Accounts.framework) обеспечивает модель единой точки входа для определенных учетных записей пользователей. Единая точка входа улучшает пользовательский опыт, потому что приложения больше не должны предлагать пользователю отдельно информацию о входе в систему, связанную с учетной записью. Это также упрощает модель разработки для Вас путем управления процессом авторизации учетной записи для приложения. В iOS 5.0 приложения могут использовать эту платформу в сочетании с платформой Twitter для доступа к аккаунту в Твиттере пользователя.

Для получения дополнительной информации о классах платформы Учетных записей, посмотрите Ссылку Платформы Учетных записей.

Универсальная платформа служб безопасности

Универсальная платформа Служб безопасности (GSS.framework) обеспечивает стандартный набор связанных с безопасностью служб к приложениям для iOS. Основные интерфейсы этой платформы указаны в IETF RFC 2743 и RFC 4401. В дополнение к предложению стандартных интерфейсов iOS включает некоторые дополнения для управления учетными данными, не указанными стандартом, но требующимися многими приложениями.

Для получения информации об интерфейсах платформы GSS посмотрите заголовочные файлы.

Базовый Bluetooth

Ядро платформа Bluetooth (CoreBluetooth.framework) позволяет разработчикам взаимодействовать в частности с Bluetooth, Низкоэнергетическим («LE») аксессуары. Интерфейсы Objective C этой платформы позволяют Вам сканировать для аксессуаров LE, подключения и разъединения к, Вы находите, читаете и пишете атрибуты в службе, регистре для службы и приписываете уведомления изменения, и многое другое.

Для получения дополнительной информации об интерфейсах Ядра платформа Bluetooth, посмотрите заголовочные файлы.

Улучшения уровня проекта приложения

Следующие разделы описывают новые возможности, которые можно включить в модель, представление и уровни контроллера приложения.

Поддержка документа

Касание какао теперь включает a UIDocument класс для управления данными связался с пользовательскими документами. При реализации основанного на документе приложения этот класс сокращает объем работы, который необходимо сделать для управления данными документа. В дополнение к обеспечению контейнера для всех Ваших связанных с документом данных, UIDocument класс предоставляет встроенную поддержку для многих функций:

  • Асинхронное чтение и запись данных по очереди фоновых задач, разрешение Вашего приложения остаться быстро реагирующими пользователям при чтении и записи операций происходят.

  • Поддержка скоординированного чтения и записи документов, требующейся для документов в хранении iCloud.

  • Безопасное сохранение данных документа путем записи данных сначала во временный файл и затем замены файла текущего документа им.

  • Если конфликт происходит, поддержка разрешения конфликтует между различными версиями Вашего документа.

  • Автоматическое сохранение данных документа в подходящие моменты.

  • Поддержка плоского файла и представлений файла пакета на диске.

  • Для приложений, использующих Базовые Данные для управления их содержанием, существует также a UIManagedDocument подкласс для управления взаимодействиями с документами в базе данных.

Если Вы реализуете приложение, поддерживающее хранение iCloud, использование объектов документа делает задание из того, чтобы хранить файлы в iCloud намного проще. Объекты документа являются предъявителями файла и обрабатывают многие связанные с iCloud уведомления, которые Вам, возможно, иначе придется обработать самим. Для получения дополнительной информации о поддержке хранения iCloud, посмотрите Хранение iCloud APIs.

Для получения информации о UIDocument класс, см. Ссылку класса UIDocument. Для получения информации о UIManagedDocument класс, посмотрите Ссылку класса UIManagedDocument.

Улучшения защиты данных

Представленный в iOS 4.0, защита данных позволяет Вам сохранить приложение и пользовательские файлы данных на диске в зашифрованном формате так, чтобы к ним можно было получить доступ только, когда разблокировано устройство пользователя. В iOS 5.0 у Вас теперь есть больше гибкости относительно того, когда Ваше приложение может получить доступ к защищенным файлам.

  • Используя NSFileProtectionCompleteUnlessOpen опция, Ваше приложение может получить доступ к файлу, в то время как устройство разблокировано и при хранении файла открытым продолжайте получать доступ к тому файлу после того, как пользователь блокирует устройство.

  • Используя NSFileProtectionCompleteUntilFirstUserAuthentication опция, Ваше приложение не может получить доступ к файлу, в то время как устройство загружается или пока пользователь не разблокировал устройство. После того, как пользователь разблокировал устройство впервые, можно получить доступ к файлу, даже если пользователь впоследствии блокирует устройство снова.

Необходимо защитить файлы как можно скорее после создания их. Для получения информации о том, как защитить файлы, см. Руководство по программированию Приложения для iOS.

Пользовательское появление для средств управления UIKit

Можно теперь настроить появление многих представлений UIKit и средств управления, чтобы дать приложению уникальный стиль. Например, Вы могли бы использовать эти настройки, чтобы заставить стандартные системные средства управления соответствовать брендинг для остальной части Вашего приложения.

UIKit поддерживает следующие настройки:

  • Можно выбрать цвет оттенка, фоновое изображение и свойства позиции заголовка (среди другого) на большом разнообразии объектов, включая панели инструментов, панели навигации, панели поиска, кнопки, ползунки и некоторые другие средства управления.

  • Можно установить атрибуты некоторых объектов непосредственно, или можно установить атрибуты по умолчанию для использования для класса с помощью прокси появления.

    Прокси появления является объектом, который Вы используете для изменения появления по умолчанию визуальных объектов, таких как элементы панели и представления. Классы, принимающие UIAppearance поддержка протоколов использование прокси появления. Для изменения появления по умолчанию такого класса получите его объект прокси с помощью appearance метод класса и вызов методы возвращенного объекта для установки новых значений по умолчанию. Объект прокси реализует те методы и свойства от его проксированного класса, тегирующиеся с UI_APPEARANCE_SELECTOR макрос. Например, можно использовать объект прокси изменить цвет оттенка по умолчанию (через progressTintColor или trackTintColor свойства) UIProgressView класс.

    Если Вы хотите установить различное появление по умолчанию на основе того, как данный объект используется в Вашем приложении, можно сделать настолько использующий объект прокси, возвращенный appearanceWhenContainedIn: метод вместо этого. Например, Вы используете этот объект прокси установить определенные значения по умолчанию для кнопки только, когда он содержится в панели навигации.

    Любые изменения, которые Вы вносите с объектом прокси, применяются, во время расположения представления, ко всем впоследствии создающимся экземплярам, класса существующим или. Однако можно все еще переопределить значения по умолчанию прокси позже с помощью методов и свойств приведенного примера.

Для получения информации о методах для настройки появления класса см. описание того класса в Ссылке Платформы UIKit.

Контейнерная поддержка контроллера представления

UIViewController класс теперь позволяет Вам определять свои собственные контейнерные контроллеры представления и существующее содержание новыми и интересными способами. Примеры существующих контейнерных контроллеров представления включают UINavigationController, UITabBarController, и UISplitViewController. Эти контроллеры представления смешивают пользовательское содержание с содержанием, предоставленным одним, или более отдельный контроллер представления возражает для создания уникального представления для содержимого приложения. Контейнерные контроллеры представления действуют как родитель для их содержавших контроллеров представления, передавая важные сообщения о вращениях и других соответствующих событиях их дочерним элементам.

Для получения дополнительной информации о контроллерах представления и методах необходимо реализовать для контейнерных контроллеров представления, видеть Ссылку класса UIViewController.

Настройки

Приложения, поставляющие пользовательские предпочтения, могут теперь использовать новый радио-элемент группы. Этот элемент подобен элементу мультизначения для выбора одного элемента из списка выбора. Различие - то, что радио-элемент группы выводит на экран свой выбор, встроенный с Вашими предпочтениями вместо на отдельной странице.

Для получения дополнительной информации об отображении предпочтений приложения с помощью приложения Настроек, посмотрите Связанные с приложением Ресурсы в Руководстве по программированию Приложения для iOS. Для получения информации о ключах списка свойств Вы используете, чтобы создать Ваш пакет Настроек, видеть Ссылку Схемы Приложения Настроек.

Инструменты XCode

Следующие разделы описывают улучшения инструментов Xcode и поддержки разработки приложений для iOS. Для получения дальнейшей информации о функциях, доступных в Xcode 4.2, посмотрите Новые функции и возможности в XCode.

Улучшения XCode

Xcode 4.2 добавляет поддержку многих функций, которые доступны в iOS 5.0.

  • Компилятор LLVM поддерживает Automatic Reference Counting (ARC), и XCode включает пункт меню для преобразования целей для использования ARC. (Для получения дополнительной информации о ARC и о том, как использовать его в Ваших приложениях, посмотрите Автоматический Подсчет ссылок.)

  • Интерфейсный пользовательский интерфейс Разработчика предоставляет поддержку для создания файлов раскадровки для Ваших приложений для iOS. (Для получения дополнительной информации об использовании раскадровок в Ваших приложениях для iOS посмотрите Раскадровки.)

  • В Средстве моделирования iOS можно теперь моделировать различные расположения для приложений с помощью Базовой платформы Расположения.

  • Можно загрузить данные приложения с устройства на iOS и автоматически восстановить те данные при отладке или тестировании в средстве моделирования iOS или на устройстве.

OpenGL отладка ES

Опыт отладки в XCode был обновлен для включения нового потока операций для отладки OpenGL приложения ES. Можно теперь использовать XCode, чтобы сделать следующее для OpenGL приложения ES:

  • Анализируйте OpenGL, который информация о состоянии ES и объекты, такие как представление текстурируют, программы построения теней, и т.д.

  • Набор устанавливает контрольные точки на OpenGL ошибки ES, условное выражение набора OpenGL точки останова точки входа ES, повреждение на границах кадра, и т.д.

Улучшения автоматизации UI

Инструмент Автоматизации теперь включает редактор сценариев, и возможность получить (записывают) действия в Ваш сценарий, поскольку Вы выполняете их на устройстве. Существуют также улучшения к объектам, которые Вы используете в инструменте Автоматизации для автоматизации тестирования UI:

  • UIATarget объект может теперь моделировать, поворачивают изменения расположения и жесты.

  • UIAHost поддержка объектов, выполняющая задачу из самого Инструментального приложения.

  • UIAElement объект может теперь моделировать поворачивать жест, центрируемый на элементе.

  • Несколько функций, которые были ранее доступны только в UIAWindow и UIAPopover были перемещены в UIAElement потому что они характерны для всех объектов элемента.

  • UIAKeyboard возразите теперь поддерживает выполнение последовательности касаний клавиатуры для моделирования ввода строки.

Для получения информации об улучшениях к инструменту Автоматизации посмотрите Инструменты Новое Руководство пользователя Функций. Для получения информации об объектах JavaScript и командах, которые Вы используете в своих сценариях, посмотрите Автоматизацию UI Ссылка JavaScript для iOS.

Инструменты

Инструментальное приложение в Xcode 4.2 добавляет несколько новых инструментов для разработчиков iOS:

  • Системная Трассировка для iOS — Использование несколько инструментов для профилирования аспектов Mac OS X или iOS, который мог влиять на производительность приложения, такую как системные вызовы, планирование потоков и операции VM.

  • Инструмент Сетевых соединений — Проверяет, как Ваше приложение использует TCP/IP и UDP/IP-СОЕДИНЕНИЯ. С этим инструментом возможно видеть, сколько данных течет через каждое соединение и для каждого приложения. Можно также использовать его для отображения интересной статистики, такой как круговые задержки и повторная передача запрашивают информацию.

  • Сетевая активность (расположенный в энергетической Диагностике) — Помогает устранить разрыв между сетями (сотовая связь и WiFi) и энергетическое использование. Вы используете его для отображения потока данных всего устройства через каждый сетевой интерфейс рядом с энергетическими данными уровня использования, взятыми непосредственно от батареи.

Для получения информации об использовании этих новых инструментов посмотрите Инструменты Новое Руководство пользователя Функций

Дополнительные улучшения платформы

В дополнение к элементам, обсужденным в предыдущих разделах, следующие платформы имеют дополнительные улучшения. Для полного списка новых интерфейсов посмотрите iOS 5.0 API Diffs.

UIKit

Платформа UIKit (UIKit.framework) включает следующие улучшения:

  • UIViewController класс может теперь использоваться для создания пользовательских контейнерных контроллеров представления; посмотрите Контейнерную Поддержку Контроллера Представления.

  • Платформа UIKit предоставляет поддержку для загрузки и использования раскадровок; посмотрите Раскадровки.

  • Панели и элементы кнопки панели могут теперь быть окрашены и настроены для Вашего приложения; посмотрите Пользовательское Появление для Средств управления UIKit.

  • UIPageViewController класс является новым контейнерным контроллером представления для создания переходов поворота страницы между контроллерами представления.

  • UIReferenceLibraryViewController класс добавляет поддержку представления пользовательской службы словаря пользователю.

  • UIImagePickerController класс поддерживает новые опции для указания качества видеозаписей.

  • UIStepper класс является новым управлением для постепенного увеличения значения значения с плавающей точкой или вниз в конфигурируемом диапазоне.

  • Основанные на представлении анимации теперь поддерживают, перекрестный распадаются, зеркальное отражение от вершины и анимации зеркального отражения от нижней части; см. Ссылку класса UIView.

  • UIApplication класс теперь сообщает о направленности языка запущенного приложения.

  • UITableView класс добавляет поддержку автоматических анимаций строки, движущихся строк и разделов, мультивыбора, и копии и способов поведения вставки для ячеек.

  • UIScreen класс позволяет Вам указать, что способы поведения компенсации сверхсканирования для видео передали AirPlay или через присоединенный HDMI-кабель. Можно также программно установить яркость экрана.

  • UIScrollView класс теперь представляет свои устройства распознавания жеста так, чтобы можно было сконфигурировать их более точно для приложения.

  • UISegmentedControl класс теперь поддерживает пропорциональные ширины сегмента.

  • UIAlertView класс теперь поддерживает ввод текста стиля пароля и специальные конфигурации для того, чтобы ввести текст надежно.

  • UIColor класс включает поддержку Базового Изображения и новых методов для получения значений отдельного цвета.

  • UIImage класс включает поддержку Базового Изображения, поддержку протяжения изображения путем мозаичного размещения части его содержания и поддержки анимаций цикличного выполнения.

  • UITextInputTraits протокол добавляет поддержку специфичной для Twitter клавиатуры и отдельного поведения проверки правописания.

  • UIAccessibility протокол включает новые интерфейсы, определяющие точку активации в элементе и указывающие, модален ли элемент или содержит скрытые элементы. Существуют также новые уведомления, сообщающие Вам об изменениях в предоставленных системой функциях доступности, таких как изменение масштаба, аудио состояние и закрытый ввод субтитров.

  • UIAccessibilityReadingContent протокол позволяет Вам предоставлять непрерывный, поворачивающий страницу опыт чтения пользователям VoiceOver.

  • UIAccessibilityIdentification протокол позволяет Вам однозначно определять элементы в своем приложении так, чтобы можно было обратиться к ним в сценариях автоматизации.

  • UIWebView класс автоматически поддерживает представление мультимедийного контента по AirPlay. Можно выбрать из этого поведения путем изменения значения в mediaPlaybackAllowsAirPlay свойство класса. Этот класс также представляет a scrollView свойство так, чтобы можно было получить доступ к свойствам прокрутки веб-интерфейсов.

Для получения информации о классах платформы UIKit см. Ссылку Платформы UIKit.

OpenGL ES

OpenGL ES (OpenGLES.framework) теперь включает следующие новые расширения:

  • EXT_debug_label и расширения EXT_debug_marker позволяют Вам аннотировать свой OpenGL код для прорисовки ES информацией, определенной для Вашего приложения. OpenGL Детектив Производительности ES, OpenGL Отладчик ES и инструменты OpenGL ES Analyzer, предоставленные XCode, все используют в своих интересах эти аннотации.

  • Расширение EXT_color_buffer_half_float позволяет 16-разрядным форматам с плавающей точкой быть указанными для цвета кадрового буфера renderbuffer.

  • Расширение EXT_occlusion_query_boolean позволяет Вашему приложению определять, были ли какие-либо пиксели бы нарисованы примитивом или группой примитивов.

  • Расширение EXT_separate_shader_objects позволяет Вашему приложению указывать отдельную вершину и программы программы построения теней фрагмента.

  • Расширение EXT_shadow_samplers предоставляет поддержку для схем затенения.

  • Расширение EXT_texture_rg добавляет однокомпонентные и двухкомпонентные форматы текстур, подходящие для использования в программируемых программах построения теней.

Как всегда, проверьте на существование расширения перед использованием его в Вашем приложении.

OpenAL

Платформа OpenAL (OpenAL.framework) имеет два значительных расширения:

  • Можно получить уведомления об исходных изменениях состояния и изменениях относительно числа обработанных аудио буферов.

  • Пространственное Аудио расширение Apple в iOS 5.0 добавляет три звуковых эффекта, которые особенно полезны для игр: реверберация, эффекты преграды и эффекты поглощения газов.

Для получения информации об интерфейсах OpenAL посмотрите заголовочные файлы.

Сообщение UI

Сообщение платформа UI (MessageUI.framework) добавляет новое уведомление для отслеживания изменений в возможности устройства отправить текстовые сообщения. Для получения информации об интерфейсах сообщения платформа UI посмотрите, передают Ссылку Платформы UI.

Медиапроигрыватель

Платформа Медиапроигрывателя (MediaPlayer.framework) включает следующие улучшения:

  • Существует теперь поддержка отображения “Теперь Игры” информации на экране блокировки и многозадачных средствах управления. Эта информация может также быть выведена на экран на Apple TV и с содержанием, поставленным через AirPlay.

  • Можно обнаружить, передается ли видео потоком к устройству AirPlay с помощью airPlayVideoActive свойство MPMoviePlayerController класс.

  • Приложения могут теперь использовать платформу для игры содержания из университета iTunes.

Для получения информации о классах в платформе Медиапроигрывателя посмотрите Ссылку Платформы Медиапроигрывателя.

Набор карты

Платформа Набора Карты (MapKit.framework) поддерживает возможность использовать возглавляющие данные для вращения карты на основе текущей ориентации пользователя. Поскольку Вы можете с приложением Карт, можно сконфигурировать представление карты для прокрутки карты согласно текущему расположению пользователя. Например, приложение пешеходной экскурсии могло бы использовать это, чтобы показать пользователю их текущее расположение в туре.

Для получения информации об интерфейсах Вы используете, чтобы реализовать прокрутку карты и вращение, видеть Ссылку Платформы MapKit.

iAd

iAd платформа (iAd.framework) предоставляет новые методы обратного вызова разработчикам, использующим многократные рекламные сети и хотящим быть уведомленными, когда новое объявление доступно. bannerViewWillLoadAd: метод (определенный в ADBannerViewDelegate протокол), вызывается, когда баннер подтвердил, что объявление доступно, но прежде чем объявление полностью загружается и готово быть представленным. interstitialAdWillLoad: метод (определенный в ADInterstitialAdDelegate протокол), предлагает подобное поведение для промежуточных объявлений.

Для получения информации о классах iAd платформы см. iAd Ссылку Платформы.

Игровой набор

Платформа Гэйма Кита (GameKit.framework) и Игровой Центр теперь имеет следующие функции:

  • GKTurnBasedMatch класс предоставляет поддержку для основанных на повороте игр, позволяющих играм создавать персистентные соответствия, состояние которых сохранено в iCloud. Ваша игра управляет информацией состояния для соответствия и определяет, какой проигрыватель должен действовать для усовершенствования состояния соответствия.

  • Ваша игра может теперь скорректировать список лидеров по умолчанию (реализованный GKLeaderboard класс) показанный каждому проигрывателю. Если Ваша игра не изменяет список лидеров по умолчанию для проигрывателя, тот проигрыватель видит список лидеров, сконфигурированный для Вашего приложения в Подключении iTunes.

  • GKNotificationBanner класс реализует настраиваемый баннер, подобный баннеру, показанному проигрывателям, когда они входят в систему Игрового Центра. Ваша игра может использовать этот баннер для отображения сообщений к проигрывателю.

  • Когда Ваша игра сообщает о достижении, она может автоматически вывести на экран баннер к проигрывателю с помощью GKAchievement класс.

  • A GKMatchmakerViewController объект может теперь добавить проигрыватели к существующему соответствию в дополнение к созданию нового соответствия.

  • GKMatchDelegate когда соответствие с двумя проигрывателями разъединяется, протокол теперь включает метод, чтобы повторно подключить устройства.

Для получения информации о классах платформы Гэйма Кита посмотрите Ссылку Платформы GameKit.

Основа

Платформа Основы (Foundation.framework) включает следующие улучшения:

  • NSFileManager класс включает новые методы для перемещения файла к хранению iCloud пользователя.

  • Новое NSFileCoordinator класс и NSFilePresenter реализация протокола, теперь блокирующая поддержку и уведомления при управлении документами в iCloud.

  • Новое NSFileVersion класс сообщает и управляет конфликтами между различными версиями файла в iCloud.

  • NSURL класс включает новые методы и константы для поддержки элементов синхронизации к хранению iCloud пользователя.

  • Новое NSMetadataQuery класс поддерживает атрибуты для элементов, синхронизировавших к хранению iCloud пользователя. Несколько других связанных с метаданными классов были также добавлены, включая NSMetadataItem, NSMetadataQueryResultGroup, и NSMetadataQueryAttributeValueTuple.

  • Новое NSJSONSerialization класс является новым классом, поддерживающим назад и вперед преобразования между данными JSON и типами Основы.

  • Новое NSLinguisticTagger класс является новым классом, позволяет Вам разбить предложение на его грамматические компоненты, позволяя определение существительных, глаголов, наречий, и т.д. Это тегирование работает полностью на английский язык, и класс также обеспечивает метод для обнаружения, какие возможности доступны для других языков.

  • Эта платформа теперь включает NSFileWrapper класс для управления пакетами файла — т.е. файлы, реализованные как непрозрачный каталог.

  • Новое NSOrderedSet класс набора предлагает семантику наборов, посредством чего каждый элемент происходит самое большее один раз в наборе, но где элементы находятся в определенном порядке.

  • Большинство методов делегата теперь объявляется с помощью формальных протоколов вместо как категории на NSObject.

Для получения информации о классах платформы Основы посмотрите Ссылку Платформы Основы.

Внешний аксессуар

Приложения, использующие Внешнее Вспомогательное платформа для передачи с внешними аксессуарами, могут теперь попросить быть разбуженными, если приложение приостановлено, когда его аксессуар поставляет новые данные. Включая UIBackgroundModes ключ с external-accessory оцените в своем приложении Info.plist файл сохраняет Ваш вспомогательным сеансы открытый, даже когда приостановлено Ваше приложение. (До iOS 5 эти сеансы были закрыты автоматически в, приостанавливают время.), Когда новые данные поступают для данного сеанса, приостановленное приложение разбужено и дано время для обработки новых данных. Этот тип поведения разработан для приложений, работающих с мониторами сердечного ритма и другими типами аксессуаров, которые должны поставить данные равномерно.

Для получения дополнительной информации о UIBackgroundModes ключ, посмотрите информационную Ключевую Ссылку Списка свойств. Для получения информации о взаимодействии с внешними аксессуарами посмотрите, что Внешний Аксессуар Программирует Темы.

Набор события и набор события UI

Платформа Набора События (EventKit.framework) включает следующие улучшения:

  • Иерархия классов была реструктурирована. Существует теперь вызванный общий базовый класс EKObject и части EKEvent класс был перемещен в новый вызванный базовый класс EKCalendarItem.

  • С EKEventStore класс, можно теперь создать и удалить календари программно, календари выборки на основе их идентификатора, сохранить и удалить события в пакетах и инициировать программируемое обновление календарных данных.

  • Новое EKSource класс представляет источник для создания новых календарей и событий.

  • EKCalendar класс теперь обеспечивает доступ к UUID календаря, источнику и другим атрибутам.

Набор События платформа UI (EventKitUI.framework) теперь включает EKCalendarChooser класс, обеспечивающий стандартный путь к выбору из календарей iCal пользователя.

Для получения информации о классах платформы Набора События посмотрите Ссылку Платформы EventKit. Для получения информации о классах Набора События платформа UI посмотрите Ссылку платформы EventKit UI.

Базовое движение

Базовая платформа Движения (CoreMotion.framework) теперь сообщающая информация заголовка поддержек и данные магнитометра для устройств, имеющих соответствующие аппаратные средства.

Для получения информации о классах Базовой платформы Движения посмотрите Базовую Ссылку Платформы Движения.

Базовое расположение

Базовая платформа Расположения (CoreLocation.framework) теперь включает поддержку и вперед и обратные данные расположения геокодирования. Эта поддержка позволяет Вам преобразовывать назад и вперед между рядом координат карты и информацией по улице, городу, стране (и т.д.) в той координате.

Для получения информации о классах Базовой платформы Расположения посмотрите Базовую Ссылку Платформы Расположения.

Базовая графика

Базовая Графическая платформа (CoreGraphics.framework) включает некоторые новые интерфейсы для поддержки создания путей. В частности существуют новые интерфейсы для создания путей с эллипсом или прямоугольником и для добавления дуг к существующим путям.

Для получения дополнительной информации о Базовых Графических интерфейсах, посмотрите Базовую Графическую Ссылку Платформы.

Базовые данные

Базовая платформа Данных включает следующие улучшения:

  • Базовые Данные обеспечивают интеграцию с архитектурой документа iOS и хранением iCloud. UIManagedDocument класс является конкретным подклассом UIDocument это использует Базовые Данные персистентное хранилище для хранения данных документа.

  • Для приложений, созданных для iOS 5.0 или позже, персистентные хранилища теперь хранят данные по умолчанию в зашифрованном формате на диске. Уровень защиты по умолчанию предотвращает доступ к данным, пока пользователь не разблокирует устройство впервые. Можно изменить уровень защиты путем присвоения пользовательского значения NSPersistentStoreFileProtectionKey ключ при конфигурировании персистентных хранилищ. Для получения дополнительной информации о защите данных, которые являются новыми в iOS 5.0, посмотрите Улучшения Защиты данных.

  • Базовые Данные формализуют модель параллелизма для NSManagedObjectContext класс с новыми опциями. При создании контекста можно указать образец параллелизма для использования с ним: ограничение потока, частная очередь отгрузки или основная очередь отгрузки. NSConfinementConcurrencyType опция обеспечивает то же поведение, которое присутствовало на версиях iOS до 5,0 и является значением по умолчанию. Когда отправка сообщений к контексту создала с ассоциацией очереди, необходимо использовать performBlock: или performBlockAndWait: метод, если Ваш код уже не выполняется на той очереди (для основного типа очереди) или в рамках a performBlock... вызов (для частного типа очереди). В блоках, переданных тем методам, можно использовать методы NSManagedObjectContext свободно. performBlockAndWait: метод поддерживает повторную входимость API. performBlock: метод включает пул автовыпуска и вызывает processPendingChanges метод после завершения.

  • Можно создать вложенные контексты управляемого объекта, в которых хранилище родительского объекта контекста является другим контекстом управляемого объекта, а не персистентным координатором хранилища. Это означает, что выборка и сохраняет операции, установлены родительским контекстом вместо координатором. Этот образец имеет много сценариев использования, включая выполнение фоновых работ на втором потоке или очереди и управлении отбрасываемыми редактированиями, такой как в окне инспектора или представлении

    Вложенные контексты делают его более важным чем когда-либо, что Вы принимаете “передачу маркер” подход доступа к контексту (путем передачи контекста от одного контроллера представления до следующего) вместо того, чтобы получить его непосредственно от делегата приложения.

  • Управляемые объекты поддерживают две существенно новых функции: упорядоченные отношения и внешнее хранение для значений атрибута. Если Вы указываете, что значение атрибута управляемого объекта может быть сохранено как внешняя запись, Базовые Данные эвристическим образом выбирают на стоимостный базис, должно ли это сохранить данные непосредственно в базе данных или сохранить URI к отдельному файлу, которым это управляет для Вас.

  • Существует два новых класса, NSIncrementalStore и NSIncrementalStoreNode, то, что можно использовать для реализации поддержки неатомарных персистентных хранилищ. Хранилище не должно быть реляционной базой данных — например, Вы могли использовать веб-сервис в качестве бэкэнда.

Для получения дополнительной информации о новых функциях в Базовых Данных, см. Базовую Информацию о версии Данных для OS X v10.7 и iOS 5.0.

Core Audio

Семья Core Audio платформ включает следующие изменения в iOS 5.0:

  • Маршрутная информация аудио сеанса теперь указана с помощью ключей словаря. Существуют также новые режимы для управления аудио поведением Вашего приложения:

    • Режим голосового чата оптимизирует систему для двухстороннего речевого разговора.

    • Режим видеозаписи конфигурирует устройство для видеосъемки.

    • Режим Measurement отключает автоматическое сжатие и ограничивающий для аудиовхода.

    • Режим по умолчанию обеспечивает iOS 4.3.3 поведения.

  • Core Audio добавляет семь новых аудиоустройств для обработки усовершенствованных функций обработки аудиоданных в Вашем приложении, таких как реверберация, корректируемая коррекция, и сжатие времени и протяжение. Новый модуль Сэмплера позволяет Вам создать музыкальные инструменты, для которых можно обеспечить собственные звуки. Новый модуль AUFilePlayer позволяет Вам играть звуковые файлы и подать их непосредственно к другим аудиоустройствам.

  • 3D аудиоустройство Микшера улучшено в iOS 5.0 для обеспечения реверберации и других эффектов, полезных в игровом аудио.

  • Можно автоматизировать параметры аудиоустройства в графике обработки аудиоданных, позволяющем Вам создать музыкальный микшер, помнящий позиции регулятора громкости и изменения.

  • Можно теперь использовать расширенные функции файлов Формата аудио Огрызка в iOS. Например, Вы могли бы создать новую речь для аудиоустройства Сэмплера.

  • Существует теперь программируемая поддержка корректировки усиления аудиовхода.

  • Core Audio теперь поддерживает 32-разрядные аудиоданные с плавающей точкой для приложений, которые должны обеспечить высококачественное аудио.

Для получения информации об аудио технологиях, доступных в iOS, см. Мультимедийное Руководство по программированию. Для получения информации о новых аудиоустройствах посмотрите Ссылку Audio Unit Component Services.

Основа AV

Платформа Основы AV включает следующие улучшения:

  • Существует автоматическая поддержка игры звукового содержимого и видеоконтента по AirPlay. Приложения могут выбрать из передачи видео по AirPlay с помощью allowsAirPlayVideo свойство AVPlayer класс.

  • Новые свойства на AVPlayerItem класс указывает, поддерживает ли элемент быструю передачу или перемотку содержания.

Для получения информации о классах платформы Основы AV см. Ссылку Платформы Основы AV.

Библиотека активов

Платформа Библиотеки Активов включает следующие улучшения:

  • Поддержка доступа к фото потокам

  • Поддержка создания новых альбомов в фото библиотеке пользователя

  • Поддержка добавления активов к альбомам

  • Возможность получить миниатюру форматного соотношения для актива

  • Возможность изменить сохраненные активы

Для получения информации о классах платформы Библиотеки Активов посмотрите Ссылку Платформы Библиотеки Активов.

Адресная книга

Платформа Адресной книги добавляет поддержку импорта и экспорта vCard данные. Это также добавляет новые ключи для соединения присоединения социальной сети с пользовательской записью.

Для получения дополнительной информации о новых функциях в платформе Адресной книги, посмотрите Ссылку Платформы Адресной книги для iOS.

Безопасность

Концепция безопасности (Security.framework) теперь включает Безопасные Транспортные интерфейсы, которые являются реализацией Apple протоколов SSL/TLS. Можно использовать эти интерфейсы, чтобы сконфигурировать и управлять сеансами SSL, управлять шифрами и управлять сертификатами.

Для получения информации о Безопасных Транспортных интерфейсах посмотрите SecureTransport.h заголовочный файл Концепции безопасности.