يتم فقد الرسوم المتحركة من NSIMAGE بعد أرشفة ذلك مع NSKEYEDARCHIVER
-
19-09-2019 - |
سؤال
الوضع التالي:
لدي مثيل لي NSObject
كائن منظرا. واحدة من عمرها هي NSImage
. وبعد بعد إنهاء الكائن الذي أتحوله NSKeyedArchiver
إلى البيانات، أرسلها عبر الشبكة، قم بتدويرها NSKeyedUnarchiver
وعرض الصورة في NSImageView
(setanimates: نعم). حتى هنا لا توجد مشاكل. يمكن عرض الصورة على الجهاز الآخر. الآن المشكلة:
إذا أرسلت GIF متحركة، فلن تحريك. لا أعرف لماذا ... أي أفكار لماذا يبقى الرسوم المتحركة بعيدا؟ شكرا لك!
تحديث
إذا قمت بفتح الصورة المتحركة قبل أرشفة ذلك NSImageView
تحريكها. المشكلة ربما أرشفة ...
تحديث 2.
اختبرت سير العمل بأكمله دون إرسال البيانات عبر الشبكة، فقط أرشفة وتشغيلها مرة أخرى. كما اشتبهت أنها مشكلة مع أرشيف NSKEYED (UN).
يتم فقد الرسوم المتحركة. ولكن ماذا تفعل لمنع هذا؟
المحلول
أنا ببساطة أرشفة بيانات الصورة الأصلية، بدلا من مثيل الصورة.
نصائح أخرى
بشكل افتراضي، NSImage
لا يحتفظ ببيانات الصورة المصدر الأصلية. ما الذي يحدث هو ذلك NSImage
يقوم أرشفة الصورة النقطية الثابتة بإطار واحد فقط وتخلص من المحتوى الأصلي.
إذا اتصلت [yourNSImageObject setDataRetained:YES]
ثم NSImage
يجب تعليق البيانات الأصلية (في هذه الحالة، GIF المتحركة). أقترح عليك محاولة القيام بذلك عند إنشاء الصورة لأول مرة، ثم انظر ما يحدث عند أرشفة / إلغاء تأجيلها.