Интеграция с OS X v10.5 и Ранее
Эта статья описывает взаимодействие области монтажа API от OS X v10.5 и ранее с APIs, представленным в OS X v10.6.
Контакт с многократными элементами
На OS X v10.6, NSPasteboard
позволяет Вам писать многократные элементы в область монтажа. При использовании в своих интересах этой возможности Вы, возможно, должны рассмотреть, как Ваше приложение будет взаимодействовать с другими, еще не принявшими эту функцию.
При размещении многократных элементов в область монтажа приложение, использующее OS X v10.5, и более ранний API будет обычно получать просто лучшее представление первого элемента на области монтажа (использование dataForType:
, -stringForType:
, или propertyListForType:
). Необходимо поэтому обычно гарантировать, что первый элемент, который Вы помещаете в область монтажа, - то, что, вероятно, чтобы быть «самым интересным» клиентам, использующим 10.5 и более ранний API.
Исключение к этому образцу является текстом. Если приложение на основе 10.6 пишет в область монтажа многократные элементы, обеспечивающие текст (строки и приписанные строки), то, если приложение на основе 10.5 читает текст из области монтажа, текст от элементов объединен с помощью символов возврата. (Можно думать об этом как сродни области монтажа, помещая отдельные строки от элементов в массив, тогда присоединяющийся к ним с componentsJoinedByString:"@\r"
.)
Методы
Можно обычно использовать API от OS X v10.5 и ранее с APIs, представленным в OS X v10.6 вместе в том же приложении. Это позволяет Вам перемещать свой код на новый API постепенным способом. С любой данной последовательностью взаимодействия, однако, необходимо быть непротиворечивыми в использовании или API от OS X v10.5 и ранее или APIs, представленный в OS X v10.6. Например, следующая комбинация не будет работать:
NSArray *fileURLs = <#An array of file URLs#>; |
NSPasteboard *pboard = [NSPasteboard generalPasteboard]; |
NSArray *typeArray = [NSArray arrayWithObject:NSURLPboardType]; |
[pboard declareTypes:typeArray owner:nil]; // 10.5 |
[pboard writeObjects:fileURLs]; // 10.6 |
Назад совместимость
Если Ваше приложение в настоящее время определяет общедоступный тип области монтажа, на который полагаются другие приложения, необходимо выполнить следующие шаги, чтобы гарантировать, что существующие приложения будут продолжать видеть тип области монтажа даже после того, как приложение переместилось от типов pboard до UTIs:
Формально объявите, что новая область монтажа вводит UTI как экспортируемое описание типа.
Гарантируйте, что заявленный UTI соответствует
public.data
ввести.Добавьте спецификацию тега для
com.apple.nspboard-type
тегируйте к описанию типа. Значение, которое Вы обеспечиваете, должно быть значением литеральной строки типа pboard, не именем константы. Следующий пример показывает, как создать спецификацию тега для соединения UTI с типом pboard:<key>UTTypeTagSpecification</key>
<dict>
<key>com.apple.nspboard-type</key>
<string>MyCustomPboardType</string>
</dict>
Типы области монтажа и UTIs
NSPasteboardItem
, NSPasteboardReading
, и NSPasteboardWriting
APIs, представленный в OS X v10.6, использует UTIs для указания типов представления. В течение долгого времени Какао будет переезжать от старых типов pboard, и к использованию UTIs исключительно на области монтажа.
На OS X v10.6 и позже, необходимо использовать UTIs для идентификации типов области монтажа. Большинство существующих констант типа области монтажа не осуждается в OS X v10.6 (исключениями является PICT и типы контента файла), однако они будут осуждаться в будущем.
Типы области монтажа с новым UTIs
Следующая таблица показывает типы области монтажа, для которых существуют новые UTIs. Таблица показывает OS X v10.5 и более ранняя константа, OS X v10.6 постоянный, и строка UTI.
Старая константа | Новая константа | Строка UTI |
---|---|---|
NSColorPboardType | NSPasteboardTypeColor | com.apple.cocoa.pasteboard.color |
NSSoundPboardType | NSPasteboardTypeSound | com.apple.cocoa.pasteboard.sound |
NSFontPboardType | NSPasteboardTypeFont | com.apple.cocoa.pasteboard.character-форматирование |
NSRulerPboardType | NSPasteboardTypeRuler | com.apple.cocoa.pasteboard.paragraph-форматирование |
NSTabularTextPboardType | NSPasteboardTypeTabularText | com.apple.cocoa.pasteboard.tabular-текст |
NSMultipleTextSelectionPboardType | NSPasteboardTypeMultipleTextSelection | com.apple.cocoa.pasteboard.multiple-text-selection |
NSFindPanelSearchOptionsPboardType | NSPasteboardTypeFindPanelSearchOptions | параметры поиска панели com.apple.cocoa.pasteboard.find |
Константы для общих типов области монтажа с существующим UTIs
Следующая таблица показывает типы области монтажа, для которых существуют существующие UTIs. Таблица показывает OS X v10.5 и более ранняя константа (где существует один), OS X v10.6 постоянный, и строка UTI.
Старая константа | Новая константа | Строка UTI |
---|---|---|
NSStringPboardType | NSPasteboardTypeString | public.utf8-простой-текст |
NSPDFPboardType | NSPasteboardTypePDF | com.adobe.pdf |
NSRTFPboardType | NSPasteboardTypeRTF | public.rtf |
NSRTFDPboardType | NSPasteboardTypeRTFD | com.apple.flat-rtfd |
NSTIFFPboardType | NSPasteboardTypeTIFF | public.tiff |
NSPasteboardTypePNG | public.png | |
NSHTMLPboardType | NSPasteboardTypeHTML | public.html |
Типы области монтажа без прямой замены
Некоторый OS X v10.5 константы не имеет соответствующих постоянных определений на OS X v10.6. Следующая таблица показывает или их состояние осуждения или что необходимо использовать вместо этого.
Постоянный | Замена/Комментарии |
---|---|
NSPICTPboardType | Осуждаемый в OS X v10.6 |
NSFilesPromisePboardType | Использовать |
NSVCardPboardType | Использовать |
NSPostScriptPboardType | Использовать |
NSInkTextPboardType | Использовать |
NSURLPboardType | Использовать |
NSFilenamesPboardType | Использовать |