Сохраняет ли NSPasteboard объекты владельца? - PullRequest
1 голос
/ 07 февраля 2011

Вы можете позвонить NSPasteboard так:

[pboard declareTypes:types owner:self];

Это означает, что монтажный щит позже попросит владельца предоставить данные для типа по мере необходимости. Однако, что я не могу найти в документах (и, возможно, я пропустил что-то кровоточащее очевидное), является ли owner сохраненным.

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

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

1 Ответ

11 голосов
/ 07 февраля 2011

Документы:

newOwner

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

Перевод: монтажный стол может илине может сохранить владельца.Независимо от того, является ли это деталью реализации, вам не следует полагаться на нее.Вы несете ответственность за сохранение владельца до тех пор, пока он действует как владелец.

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

В документации ничего не говорится о сохранении/ Отпустить политику владельца (и нет какого-либо общего правила).Это следует уточнить (rdar: // 8966209 подала).На самом деле делать предположения о поведении сохранения / освобождения опасно.

...