UIPasteboard упрямо настойчив, независимо от того, что я делаю

Я создаю приложение UIPasteboard с идентификатором моего приложения в качестве имени (например, com.example.app.pboard), как это предлагается в документах.

Все операции копирования и вставки работают, но эта чертова вещь никуда не исчезает. Я явно устанавливаю для его свойства persistent значение NO каждый раз, когда я обращаюсь к нему, чтобы скопировать что-то на него, и я даже вызываю +removePasteboardWithName: UIPasteboard каждый раз, когда мое приложение запускается.

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

Что дает?


person Ben Zotto    schedule 06.10.2011    source источник
comment
Вы нашли решение? Я только что столкнулся с той же проблемой. Удален монтажный стол из одного приложения. Пошел в другое приложение и все еще мог прочитать содержимое! (нет, это не было воссоздано).   -  person DBD    schedule 09.05.2013


Ответы (2)


Не знаю, почему то, что вы пытаетесь сделать, не работает, вот два предположения и возможное решение:

  • Можно ожидать, что удаление панели вставки будет выполнено при выходе из приложения, поэтому оно не будет выполняться до тех пор, пока приложение не будет завершено или переведено в фоновый режим?
  • Вызов удаления, а затем запрос элементов может быть воссозданием его снова в том же «месте», поэтому элементы все еще остаются.

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

person jrturton    schedule 06.10.2011
comment
Что ж, первое предположение не может быть правильным, поскольку, если я хочу сохранить монтажный стол действительным на время работы многозадачного приложения, то никогда не будет подходящего времени для его удаления. Тем не менее, ваше решение сработало - при запуске приложения я просто получаю монтажный стол и уничтожаю items. До сих пор не могу этого объяснить, но это работает. Спасибо! - person Ben Zotto; 06.10.2011

Вы можете сделать UIPasteboard постоянным. Согласно документу Apple,

setPersistent: Логическое значение, указывающее, является ли монтажный стол постоянным. Когда монтажный стол является постоянным, он продолжает существовать после завершения работы приложения и перезагрузки системы. Вставки приложения, которые не являются постоянными, сохраняются только до тех пор, пока владеющее (создающее) приложение не закроется. Общесистемный общий монтажный стол является постоянным. Именованные монтажные панели для конкретных приложений не являются постоянными.

Обновление: для iOS 10 UIPasteboard устанавливает постоянство автоматически.

Примечание. Начиная с iOS 10, система автоматически устанавливает сохранение монтажного стола. Если вы попытаетесь установить свойство setPersistent: на монтажном столе, Xcode выдаст предупреждение об устаревании. Вместо именованных постоянных монтажных панелей используйте общие контейнеры, как описано в разделе «Обзор» этого документа.

person Gavin    schedule 15.02.2017