Анимация NSImage теряется после архивации с NSKeyedArchiver - PullRequest
0 голосов
/ 10 февраля 2010

Следующая ситуация:

У меня есть экземпляр моего NSObject объекта sublcassed. Одним из его свойств является NSImage. После создания экземпляра объекта я конвертирую его с NSKeyedArchiver в данные, отправляю по сети, разархивирую с помощью NSKeyedUnarchiver и отображаю изображение в NSImageView (setAnimates: YES). Пока здесь нет проблем. Изображение может быть отображено на другом компьютере. Теперь проблема:
Если я отправлю анимированный GIF, он не будет анимирован. Я не знаю почему ... Есть идеи, почему анимация не используется? Спасибо!

UPDATE

Если я открою анимированное изображение перед его архивированием, NSImageView оживит его. Возможно, проблема в архивировании ...

ОБНОВЛЕНИЕ 2

Я проверил весь рабочий процесс, не отправляя данные по сети, а просто архивировал и разархивировал их снова. Как я и подозревал, это проблема с NSKeyed (Un) Archiver.
Анимация теряется. Но что делать, чтобы предотвратить это?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2010

Я бы просто заархивировал исходные данные изображения, а не экземпляр изображения.

0 голосов
/ 11 февраля 2010

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

Если вы звоните [yourNSImageObject setDataRetained:YES], то NSImage должен удерживать исходные данные (в данном случае анимированный GIF). Я бы посоветовал вам попробовать сделать это при первом создании изображения, а затем посмотреть, что произойдет, когда оно будет заархивировано / архивировано.

...