سؤال

هل من الحكمة إنشاء وجهات نظر في الكاكاو لها أبعاد حوالي 15000 بكسل؟ (بالطبع جزء صغير فقط من هذا الرأي سيكون مرئيًا في وقت واحد في أ NSScrollView)

الحد الأقصى للواجهة باني 10000 بكسل في الحجم. هل هذا قيود اصطناعية أم أن هناك سبب وجيه وراءه؟

هل يجب أن أخلق رؤية ضخمة وأدع NSScrollView/Quartz قلق بشأن تقديمه بكفاءة (يتم رسم وجهة نظري برمجيًا داخل المنطقة المطلوبة في drawRect) أو هل أخاطر باستخدام الذاكرة المفرطة والمشاكل الأخرى؟ (على سبيل المثال ، هل يمكن أن يحاول نظام التشغيل OS X ذاكرة التخزين المؤقت لنقطة View بأكملها في ذاكرة الفيديو في أي وقت؟)

هل كانت مفيدة؟

المحلول

لا تحتوي وجهات النظر على متاجر دعم ، إلا إذا كانت مدعومة بالطبقة. النافذة هي ما يحتوي على متجر الدعم ، وبالتالي فإن كمية الذاكرة المستخدمة لعرض العرض تقتصر على حجم النافذة.

لذلك فإن الجواب هو نعم. المضي قدما وجعل آرائك كبيرة كما تريد.

(بالطبع ، سترغب في الحد من الرسم الذي تقوم به في عرض المستقيم الذي تم تمريره drawRect: أو ستفقد الكثير من الوقت في القيام برسم غير مرئي.)

نصائح أخرى

حسنًا ، إذا حاولت الكاكاو تخزين النظرة بأكملها في الذاكرة ، فستكون هذه مشكلة:

10000 * 10000 = 100,000,000
* 4 = 400,000,000

هذا هو 400 ميغابايت في بكسل RGBA RAW واحد رأي. إذا كنا نريد أن نكون متشائمين حقًا ، افترض أن NSVIEW تعرض مزدوجًا لك ، وفي هذه الحالة يتضاعف استخدام الذاكرة إلى 800 ميغابايت.

في أسوأ حالات ، يقوم المستخدم بتشغيل تطبيقك على جهاز Mac Mini القديم مع ذاكرة وصول عشوائي 1 جيجابايت - والتي استخدمتها للتو 80 ٪. سيبدأ النظام بالتأكيد في الترحيل قبل هذه النقطة ، مما يجعل نظامه بطيئًا بشكل لا يطاق.

من ناحية أخرى ، إنها أسهل طريقة لتنفيذها والتي يمكنني التفكير فيها ، لذلك أقول جربها ومعرفة ما يقوله شاشة النشاط حول استخدام ذاكرتك. إذا كانت عالية جدًا ، فحاول تغيير الخيارات المختلفة لعرض التمرير وعرض المقطع ؛ إذا لم ينجح ذلك ، فلا يمكنني التفكير في أي شيء آخر سوى جعل التمرير الخاص بك وتزييفه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top