Spec-Zone .ru
спецификации, руководства, описания, API
Библиотека Разработчика iOS Разработчик
Поиск
Copyright © 2011 Информации о версии iOS Apple Inc Все права защищены.



iOS 5 Информации о версии
Платформа CoreFoundation



CoreFoundation (иначе CF) является платформой, обеспечивающей APIs C для строк, наборов, пользовательских настроек, списков свойств, плагинов, пакетов, уведомлений, runloop, и т.д. Этот APIs разработан с мобильностью, производительностью и непротиворечивостью в памяти, и доступен Сенсорным приложениям Какао.

CoreFoundation доступен непосредственно как общедоступная платформа.





CFXMLParser

CFXMLParser и CFXMLNode осуждаются. CFXMLParser имеет некоторые недостатки с точки зрения соответствия стандартов и производительности, и клиенты должны переместить свое использование классов CFXMLParser NSXMLParser, NSXMLDocument или другого XML парсинг технологий на iOS 5.


CFPreferences и поточная обработка

В более ранних выпусках iOS CFPreferences (и NSUserDefaults) сериализировал весь доступ; если Вы избегали использования предпочтительной системы в в большой степени потоковых приложениях вследствие конкуренции, это должно быть значительно улучшено.


CFPreferencesAppSynchronize () и автоматическая синхронизация

CFPreferences теперь использует автоматическую систему синхронизации для домена текущего приложения, который всегда использовал NSUserDefaults. Кроме того, автоматическая синхронизация теперь неблокирует в большинстве случаев. Необходимо полагать, что любые вызовы к CFPreferencesAppSynchronize () тщательно видят, действительно необходимы ли они, поскольку можно избежать блокировать IO путем удаления их.


CFPreferences euid/uid обработка

До iOS 5 CFPreferences (и поэтому NSUserDefaults) изменил бы владельца plist файлов, которые это записало в uid/gid приложения, пишущего в предпочтения. В iOS 5, для приложений, соединенных против iOS 5 или позже, файл будет принадлежать euid/egid вместо этого. Можно временно вернуться к старому поведению для тестирования путем установки __ CFPREFERENCES_USE_OLD_UID_BEHAVIOR в ненулевое значение в среде. Это прежде всего повлияет на приложения с привилегированными инструментами помощника, пишущими в предпочтения непривилегированных приложений, такие как Прикрепление или родительский процесс.


Расстановка переносов CFString

CFString теперь включает средство для определения местоположения потенциальных дефисных точек в слове. Когда автоматическая разбивка слова для переноса включена, это предназначается для использования текстовых механизмов расположения, таких как NSTypesetter. Расстановка переносов зависит в большой степени от языка текста, который будет написан через дефис, и CFStringGetHyphenationLocationBeforeIndex () требует, чтобы это было указано как CFLocale. Данные расстановки переносов являются доступными только для определенных языков, в настоящее время английскими (США и Великобритания), французский, немецкий, итальянский, испанский, нидерландский и русский язык, несмотря на то, что этот список может быть расширен в будущем. Определение во время выполнения того, доступны ли данные расстановки переносов для данного языка, может быть сделано с помощью CFStringIsHyphenationAvailableForLocale ().

Функции, связанные со средством расстановки переносов, следующие:
CFIndex CFStringGetHyphenationLocationBeforeIndex(CFStringRef string, CFIndex location, CFRange limitRange,
CFOptionFlags options, CFLocaleRef locale, UTF32Char *character);
Boolean CFStringIsHyphenationAvailableForLocale(CFLocaleRef locale);

Для использования CFStringGetHyphenationLocationBeforeIndex () клиент должен передать в строке, содержащей текст, предназначенный, чтобы быть написанным через дефис, расположение, перед которым дефисная точка должна быть найдена, диапазон, ограничивающий часть текста, который будет исследован, и локаль. Возвращаемое значение будет индексом в строке, где является надлежащим вставить дефис или CFNotFound, если ни один не найден, который является и перед указанным расположением и в ограничивающем диапазоне. Могут быть случаи на определенных языках, на которых символ кроме стандартного дефиса используется для указания расстановки переносов, и символьный параметр предназначается для возврата предложенного символа ссылкой; клиенты могут передать NULL для этого параметра, если они не интересуются этой информацией.


CFStringGetFileSystemRepresentation

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


CFStringCapitalize

Логика капитализации улучшена для поддержки диграфа, «IJ», с голландской локалью.


База данных CoreFoundation Unicode

База данных CoreFoundation Unicode обновляется к версии 6.0.


kCFCompareForcedOrdering и kCFCompareNumerically с CFStringCompareWithOptionsAndLocale ()

Когда эти два числовых значения равны, мы не смогли вызвать упорядочивание для различий в цифровых символах. Кроме того, в некоторых случаях мы не приводили к идеальным результатам (т.е. 001 <01). Мы оцениваем упорядочивание на основе числа цифр, вовлеченных в числовое значение.


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

Если Вы хотите, чтобы отправленное распределенное уведомление было сразу получено, уверены, что Вы передаете флаг поведения приостановки CFNotificationSuspensionBehaviorDeliverImmediately при регистрации для уведомления или использовании флага kCFNotificationDeliverImmediately при регистрации. Ошибки в выпусках iOS до 5,0 означали, что иногда распределенное уведомление поставить через временно отстраненным наблюдателям и не должным образом поставить в очередь, даже когда не использовались те флаги.


CFCalendar

Алгоритмы CFCalendar имеют несколько различий, в зависимости от которых OS версия SDK Вы создаете свое приложение против. CFCalendarGetRangeOfUnit () может привести к существенно различным результатам для iOS 2, 3, 4/5. CFCalendarGetOrdinalityOfUnit () может привести к существенно различным результатам для iOS 2/3 и iOS 4/5. CFCalendarComposeAbsoluteTime () может привести к различным результатам на iOS 5, чем предыдущие выпуски при работе с Недельными модулями.

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

В CFCalendar существует 3 новых Связанных с неделей константы модуля/компонента:
kCFCalendarUnitWeekOfMonth, kCFCalendarUnitWeekOfYear, kCFCalendarUnitYearForWeekOfYear
и значения этих количеств являются недельными числами или суммами, касающимися месяца или года, что неделя находится в, и число года для основанных на неделе интерпретаций календаря, таких как календарь ISO 8601.

Для многих операций нет никакого различия в значении между kCFCalendarUnitWeekOfMonth и kCFCalendarUnitWeekOfYear, но для некоторых, которые существует различие. Очевидно, получение ordinality недели с месяцем будет обычно давать различный ответ, чем ordinality недели в течение года. kCFCalendarUnitWeek константа официально еще не осуждается, но ее использованию в новом коде обескураживают. Это имеет поведение или как kCFCalendarUnitWeekOfMonth или как kCFCalendarUnitWeekOfYear, в зависимости от обстоятельств, для предоставления его, поведение как он имело до iOS 5.


CFURL

Мы добавили много новых ключей свойства ресурса.
Функции CFURLCreateBookmarkDataFromFile () и CFURLWriteBookmarkDataToFile () были представлены iOS 5.0. Они были ранее представлены Mac OS X 10.6.


CFURLEnumerator

CFURLEnumeratorGetSourceDidChange () теперь осуждается.

kCFURLEnumeratorIncludeDirectoriesPreOrder и kCFURLEnumeratorIncludeDirectoriesPostOrder опции для рекурсивных перечислителей каталога были добавлены.


CFError

Мы добавили ключи kCFErrorFilePathKey userInfo словаря и kCFErrorURLKey.


Новый CFRunLoop API

Существует две новых функции для создания CFRunLoopObservers и CFRunLoopTimers, соответственно, которые берут Блок для выполнения, а не указатель функции и аргументы context:
CFRunLoopObserverRef CFRunLoopObserverCreateWithHandler(CFAllocatorRef allocator, CFOptionFlags activities, Boolean repeats,
CFIndex order, void (^block)(CFRunLoopObserverRef observer, CFRunLoopActivity activity))
CFRunLoopTimerRef CFRunLoopTimerCreateWithHandler(CFAllocatorRef allocator, CFAbsoluteTime fireDate, CFTimeInterval interval,
CFOptionFlags flags, CFIndex order, void (^block)(CFRunLoopTimerRef timer))