Интеграция с 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:

  1. Формально объявите, что новая область монтажа вводит UTI как экспортируемое описание типа.

  2. Гарантируйте, что заявленный UTI соответствует public.data ввести.

  3. Добавьте спецификацию тега для 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

Использовать (NSString *)kPasteboardTypeFileURLPromise вместо этого.

NSVCardPboardType

Использовать (NSString *)kUTTypeVCard вместо этого.

NSPostScriptPboardType

Использовать @"com.adobe.encapsulated-postscript" вместо этого.

NSInkTextPboardType

Использовать (NSString *)kUTTypeInkText вместо этого.

NSURLPboardType

Использовать writeObjects: записать NSURL объекты непосредственно к области монтажа.

NSFilenamesPboardType

Использовать writeObjects: записать файл NSURL объекты непосредственно к области монтажа.