Анимация NSImage теряется после архивирования ее с помощью NSKeyedArchiver
-
19-09-2019 - |
Вопрос
Следующая ситуация:
У меня есть пример моего NSObject
переданный в субаренду объект.Одним из его свойств является NSImage
.После создания экземпляра объекта я преобразую его с помощью NSKeyedArchiver
к данным, отправьте их по сети, разархивируйте с помощью NSKeyedUnarchiver
и отобразите изображение в NSImageView
(Множество живых существ:ДА).Пока здесь нет никаких проблем.Изображение может быть отображено на другом компьютере.Теперь о проблеме:
Если я отправлю анимированный gif-файл, он не будет анимирован.Я не знаю почему...Есть какие-нибудь идеи, почему анимация остается в стороне?Спасибо!
Обновить
Если я открою анимированное изображение перед его архивацией, то NSImageView
оживляет его.Возможно, проблема в архивировании...
ОБНОВЛЕНИЕ 2
Я протестировал весь рабочий процесс без отправки данных по сети, просто заархивировав и разархивировав их снова.Как я и подозревал, это проблема с архиватором NSKeyed (Un).
Анимация теряется. Но что сделать, чтобы предотвратить это?
Решение
Я бы просто заархивировал исходные данные изображения, а не экземпляр изображения.
Другие советы
По умолчанию, NSImage
не сохраняет исходные данные исходного изображения.Вероятно, происходит вот что NSImage
архивирует статическое растровое изображение только одного кадра и удаляет исходное содержимое.
Если ты позвонишь [yourNSImageObject setDataRetained:YES]
затем NSImage
следует придерживаться исходных данных (в данном случае анимированного GIF).Я бы посоветовал вам попробовать сделать это при первом создании изображения, а затем посмотреть, что произойдет, когда оно будет заархивировано / разархивировано.