Примечание выпуска Developer OS X

Copyright © 2011 информации о версии OS X Apple Inc Все права защищены.

Содержание:

Информация о версии пумы OS X для платформы CoreFoundation

Платформа CoreFoundation

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

CoreFoundation доступен непосредственно как общедоступная платформа. Но это также в платформе защиты CoreServices и очень часто вытягивается в Ваше приложение просто путем соединения против CoreServices или одного из высокоуровневых зонтиков, таких как Какао или Углерод, вводящие CoreServices.

Синхронизация CFPreferences

CFPreferencesSynchronize () (и поэтому CFPreferencesAppSynchronize () и - [NSUserDefaults синхронизируются]) является теперь автоматическим в фактически всех случаях. Единственная остающаяся причина вызвать его состоит в том при необходимости в отдельном процессе, чтобы быть в состоянии синхронно получить доступ к значениям, Вы просто устанавливаете; например, если Вы устанавливаете предпочтение, затем отправляете уведомление, которое другой процесс получает и читает то же предпочтение. Большинство регулярных приложений никогда не должно будет делать этого, и делающие приложения призваны использовать межпроцессное взаимодействие API (например, XPC) для передачи с другим процессом вместо того, чтобы использовать предпочтительную систему для IPC.

Если нет никаких выдающихся изменений в чтение или запись, CFPreferencesSynchronize () также намного быстрее в 10,8 и избежит выполнять любую работу.

CFPreferences Plist файлы

Дисковые файлы списка свойств, используемые CFPreferences, всегда были частной подробностью реализации, но в предыдущих выпусках, непосредственно изменение их главным образом работало (хотя существуют некоторые потенциальные проблемы потери данных для приложений, делающих так, даже в предыдущих системах). В 10,8 и позже, процесс агента CFPreferences (cfprefsd) будет кэшировать информацию от этих файлов и асинхронно писать в них. Это означает, что непосредственно изменение plist файлы вряд ли будет иметь ожидаемые результаты (новые настройки будут не обязательно считаны и могут даже быть перезаписаны). Необходимо использовать NSUserDefaults или APIs CFPreferences или значения по умолчанию (1) команда, для взаимодействия с предпочтительной системой.

CF/NSString Локализованное Форматирование

В 10,8, в приложениях соединился против 10,8 SDK, существующий APIs, такой как CFStringCreateWithFormat (), CFStringAppendFormat (), а также APIs NSString + [NSString localizedStringWithFormat:], - [NSString initWithFormat:locale:], теперь сделает локализованное форматирование чисел, когда локаль будет предоставлена (для +localizedStringWithFormat: это подразумевается, с помощью локали пользователя по умолчанию.)

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

- использование альтернативных цифр, такой как в некоторых арабских локалях

- размещение отрицательного символа после числа, в некоторых локалях (»-42»-> «42-»)

- тысячи разделителей, во многих локалях включая английский язык («12345»-> «12,345»)

- альтернатива тысячи разделителей («12,345.6»-> «12.345,6»)

Локализация применяется в следующих случаях:

- Только e, E, f, F, g, G, d, D, я, u, U локализуюсь; варианты верхнего регистра проигнорированы (и обработаны, как будто они были нижним регистром). a, A, o, O, x, X не локализуются, и ни один не все другие нечисловые символы формата.

- % используемый с NSNumber/CFNumber локализуется.

- Флаги +, - 0, ширина и точность соблюдают, но отмечают, что дополнительные символы (вне указанной ширины) могут быть вставлены для размещения тысяч разделителей.

Потенциальные ловушки включают быть локализованным вывода, где не локализовано был предназначен, и использование непреднамеренных тысяч разделителей (например, если кто-то показывал год с %d, теперь они могут добраться «2,012»).

Отображение случая греческой буквы

С греческой локалью верхний регистр и titlecase отображения разделяют все греческие tonos символы.

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

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

Информация о версии OS X Lion для платформы CoreFoundation

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

CoreFoundation доступен непосредственно как общедоступная платформа. Но это также в платформе защиты CoreServices и очень часто вытягивается в Ваше приложение просто путем соединения против CoreServices или одного из высокоуровневых зонтиков, таких как Какао или Углерод, вводящие CoreServices.

CFXMLParser

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

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

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

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

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

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

До OS X Lion CFPreferences (и поэтому NSUserDefaults) изменил бы владельца plist файлов, которые это записало в uid/gid приложения, пишущего в предпочтения. У Льва, для приложений, соединенных против Льва или позже, файл будет принадлежать 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 при регистрации. Ошибки в выпусках OS X до 10,7 означали, что иногда распределенное уведомление поставить через временно отстраненным наблюдателям и не должным образом поставить в очередь, даже когда не использовались те флаги.

CFCalendar

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

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

В CFCalendar существует 3 новых Связанных с неделей константы модуля/компонента:

kCFCalendarUnitWeekOfMonth, kCFCalendarUnitWeekOfYear, kCFCalendarUnitYearForWeekOfYear

и значения этих количеств являются недельными числами или суммами, касающимися месяца или года, что неделя находится в, и число года для основанных на неделе интерпретаций календаря, таких как календарь ISO 8601.

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

CFURL

Мы добавили много новых ключей свойства ресурса.

Функции CFURLCreateBookmarkDataFromFile () и CFURLWriteBookmarkDataToFile () были представлены iOS 5.0. Они были ранее представлены OS X 10.6.

CFURLEnumerator

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

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

CFFileSecurity

CFFileSecurity является новым типом объекта, представленным для замены Файлового менеджера Углерода объект FSFileSecurity. CFFileSecurityRef и FSFileSecurityRef являются тем же типом объекта (т.е. у них есть тот же идентификатор типа, и конкретная реализация является тем же).

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))

OS X информация о версии SnowLeopard для платформы CoreFoundation

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

CoreFoundation доступен непосредственно как общедоступная платформа. Но это также в платформе защиты CoreServices и очень часто вытягивается в Ваше приложение просто путем соединения против CoreServices или одного из высокоуровневых зонтиков, таких как Какао или Углерод, вводящие CoreServices.

Этот документ описывает изменения в CF начиная с выпуска 10.5 OS X. Обновления к документу начиная с WWDC 2008 обозначены в заголовках раздела.

CFURL

Существуют дополнения к API CFURL для включения более эффективного манипулирования свойством файла, также дополнительные способы поведения. Больше предстоящего описания.

CFPropertyList

Следующие функции являются теперь устаревшими и будут осуждаться в будущем выпуске:

CFPropertyListRef CFPropertyListCreateFromXMLData(CFAllocatorRef allocator, CFDataRef xmlData, CFOptionFlags mutabilityOption,
                                CFStringRef *errorString);
CFPropertyListRef CFPropertyListCreateFromStream(CFAllocatorRef allocator, CFReadStreamRef stream, CFIndex streamLength,
                                CFOptionFlags mutabilityOption, CFPropertyListFormat *format, CFStringRef *errorString);
CFIndex CFPropertyListWriteToStream(CFPropertyListRef propertyList, CFWriteStreamRef stream, CFPropertyListFormat format,
                                CFStringRef *errorString);
CFDataRef CFPropertyListCreateXMLData(CFAllocatorRef allocator, CFPropertyListRef propertyList);

Замена API:

CFPropertyListRef CFPropertyListCreateWithData(CFAllocatorRef allocator, CFDataRef data, CFOptionFlags options,
                                CFPropertyListFormat *format, CFErrorRef *error);
CFPropertyListRef CFPropertyListCreateWithStream(CFAllocatorRef allocator, CFReadStreamRef stream, CFIndex streamLength,
                                CFOptionFlags options, CFPropertyListFormat *format, CFErrorRef *error);
CFIndex CFPropertyListWrite(CFPropertyListRef propertyList, CFWriteStreamRef stream, CFPropertyListFormat format,
                                CFOptionFlags options, CFErrorRef *error);
CFDataRef CFPropertyListCreateData(CFAllocatorRef allocator, CFPropertyListRef propertyList, CFPropertyListFormat format,
                                CFOptionFlags options, CFErrorRef *error);

Новый API обеспечивает лучшую обработку ошибок, лучше поддерживайте для локализации и более простого создания двоичных списков свойств. Если никакая информация об ошибке не желаема, любой параметр ошибок может быть установлен в NULL. Если указатель CFErrorRef будет передан в, и ошибка происходит, то это будет заполнено информацией об ошибке, и это - ответственность вызывающей стороны выпустить новую ошибку. Параметр формата в функциях CFPropertyListCreateWIthData и CFPropertyListCreateWithStream может также быть установлен в NULL, но если указатель CFPropertyListFormat будет передан в, то это будет заполнено форматом списка свойств.

Флаги опции на функциях CFPropertyListCreateWithData и CFPropertyListCreateWithStream могут быть установлены в любое из значений CFPropertyListMutabilityOptions. Флаги опций на CFPropertyListWrite и CFPropertyListCreateData в настоящее время не использованы и должны быть установлены в 0.

CFXMLParser (Новый начиная с WWDC 2008)

CFXMLParser и CFXMLNode будут официально осуждаться в будущей главной версии OS X. CFXMLParser имеет некоторые недостатки с точки зрения соответствия стандартов и производительности, и клиенты должны переместить свое использование классов CFXMLParser NSXMLParser, NSXMLDocument или другого XML парсинг технологий на OS X.

CoreFoundation API, не доступный в iOS 2.0

OS X APIs в CFUserNotification.h, CFXMLParser.h, CFXMLNode.h и CFStringTokenizer.h не доступен в iOS 2.0. Распределенные уведомления (CFNotificationCenterGetDistributedCenter ()) также не доступны. Иначе, iOS 2.0 содержит API, соответствующий это в OS X 10.5.

CoreFoundation API, не доступный в iOS 3.0

OS X APIs в CFUserNotification.h, CFXMLParser.h и CFXMLNode.h не доступен в iOS 3.0. Распределенные уведомления (CFNotificationCenterGetDistributedCenter ()) также не доступны. Иначе, iOS 3.0 содержит API, соответствующий это в OS X 10.5.

Новый CFCalendarUnit

Новая единица времени по календарю «четверти» (kCFCalendarUnitQuarter) была добавлена к набору CFCalendarUnits (CFCalendar.h).

Новые календари

Четыре новых календарных константы (kCFRepublicOfChinaCalendar, kCFPersianCalendar, kCFIndianCalendar, kCFISO8601Calendar) были добавлены (CFLocale.h). Календарь ISO8601 еще не реализован. Может быть создан китайский календарь, и можно сделать calendrical вычисления с ним, но он не должен использоваться для форматирования, поскольку необходимая базовая функциональность правильно еще не функционирует.

CFDataFind (Новый начиная с семени в ноябре)

CFData теперь имеет функцию, которая будет эффективно искать ее содержание:

    CFRange CFDataFind(CFDataRef theData, CFDataRef dataToFind, CFRange searchRange, CFDataSearchFlags compareOptions);

Семантика почти идентична CFStringFind. Единственной значительной разницей является отсутствие 'нечувствительных к регистру' и 'литеральных' параметров поиска, которые только применимы к строкам.

CFString (Обновленный начиная с WWDC 2008)

Если бы объем памяти, требуемый для хранения результатов преобразования кодирования, превысил бы LONG_MAX, CFStringGetMaximumSizeForEncoding функций () и CFStringGetMaximumSizeOfFileSystemRepresentation () теперь возвратит kCFNotFound.

Примечание использования: При использовании CFStringCreateWithFormat (), и любой другой CFString или NSString форматирование APIs, это недопустимо для передачи меньше упорядоченного (n$) параметры, чем существуют параметры. Например:

    CFStringCreateWithFormat(NULL, NULL, CFSTR("%2$d", arg1, arg2);

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

CFString

Существует теперь 4 новых подставляемых функции для работы с суррогатными символами UTF-16, объявленными в CFString.h. CFStringIsSurrogateHighCharacter () и CFStringIsSurrogateLowCharacter () идентифицируют суррогатные символы. CFStringGetLongCharacterForSurrogatePair () отображает пару высоких и низких суррогатных символов к Скалярному значению Unicode. CFStringGetSurrogatePairForLongCharacter () отображает Значение Счетчика Unicode назад на суррогатную пару.

Существует две новых константы CFStringEncoding: KCFStringEncodingUTF7 и kCFStringEncodingUTF7_IMAP.

Unicode (Новый начиная с WWDC 2008)

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

CFCharacterSet (Новый начиная с WWDC 2008)

CFCharacterSetCreateWithCharactersInString, CFCharacterSetAddCharactersInString и CFCharacterSetRemoveCharactersInString теперь правильно распознают суррогатный Париж в строке.