سؤال

انا املك UITableView التي تعرض الكثير من الصور في الخلايا، وأنا لا أترك سعيدا بأداء التمرير. لي UITableView هو شيء مثل تطبيق الصور على iPhone. هل يعرف أي شخص لماذا تخفيض تطبيق iPhone Foto لعنة بسرعة كما لو كان شيئا على الشاشة.

وهل لدى أي شخص بعض النصائح / الحيل لزيادة سرعة أداء / التمرير؟

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

المحلول

يجب عليك استبعاد صورك وعدم القيام بذلك بضغط. كما قمت بتمرير الجدول الخاص بك القيميتيوDATASource: Cellforrowatendexpath: يتم استدعاء الطريقة، وإذا كنت تقوم بتحميل صورك، فستشاهدها تطلب محتويات الخلية الخاصة بك أثناء التمرير الخاص بك، وإنشاء الكمون في التطبيق الخاص بك. حاول وضع جعل جلسات cellforrowatendexpath: شيء مثل هذا:

NSDate *date = [NSDate date];
... your cell loading code ...
NSLog( @"Elapsed time to generate cell %.2d", [date timeIntervalSinceNow] );

سترى المدة التي تنفقها للحصول على كل خلية.

للحصول على هذا، يمكنك أن تكون معقدا كما تحتاج - إذا كان لديك كثيرا من الصور، سوف تضطر إلى أن تكون أكثر وأكثر ذكاء. يمكنك إجراء التحميل المقسم، حيث تتبع الخلية الأخيرة المطلوبة nsindexpath، وتحديد ما إذا كان التمرير يرتفع أو إسقاط + nsimage: ImageNamed: لجلب في وقت واحد بعض الصفحات من الصور إلى الأمام (أي 5 صور إلى الأمام من موقعك الحالي)، أو أي شيء يعمل لك (الاستفادة من حقيقة أن الناس يتعين عليهم إعاد إصبعهم إلى أسفل الجدول إلى أسفل مرة أخرى، وبالتالي فإن استهلاك عناصر الجدول لديه توقف - يمكنك جعل حجم صفحتك كبيرة بما يكفي لملء انتقاد). ربما لا يزال هذا ليس رائعا، لأنك ستعاني فقط من هذا التأثير في وقت واحد بدلا من حمولة Jittery لكل خلية.

يمكنك إرجاع التحكم في واجهة المستخدم بسرعة والسماح للنظام بجدولة صفحة Prefection Prefection من الصور باستخدام nsrunloop: protectselector: الهدف: حجة: الترتيب: الوضع: خارج Runloop الرئيسي باستخدام NSIMAGE: ImageNamed:، ثم عند طلب الخلية إذا كنت جلب بعيدا بما فيه الكفاية، ستكون متاحة للعرض.

عليك أن تكون على دراية بألم في مخاوف الذاكرة. إذا كنت تجد أن هذا هو مشكلة، فاستخدم nsimage: initwithcontentsoffile:, ، والتي سوف تنظف مخابئ الصور في حالات الذاكرة المنخفضة. اعتمادا على الاستراتيجية المستخدمة من خلال خوارزمية إبطال ذاكرة التخزين المؤقت قد تتسبب هذه المواقف في "تلعثم" أثناء تطهير المخابئ وإعادة تحميل برجيلك المبطنة.

نصائح أخرى

تم الإبلاغ عن نتائج أداء التمرير العظيمة من خلال الفئات الفئة الفرعية JitalViewcell ورسم محتويات كل خلية مباشرة. انظر الإجابة المقبولة ل هذا السؤال لمزيد من التفاصيل والروابط لعينات التعليمات البرمجية.

المشكلة هنا هي الذاكرة، تقوم بتحميل الكثير من الصور عالية الدقة في وقت واحد، لا يستخدم تطبيق FOTO جدول طاولة يستخدم عرض التمرير وتحميله فقط من 3 صور كحد أقصى في وقت واحد، لذلك الذاكرة ليست مصدر قلق، إذا كنت تحاول أن تفعل شيئا مشابها لتطبيق FOTO، فاستخدم عرض التمرير

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