سؤال

وأخشى هذا هو رمز الشر:

CGRect iRect = CGRectMake(0.0f, 0.0f, 320.0f, 400.0f);
UIImageView *imgView = [[UIImageView alloc] initWithFrame:iRect];
imgView.animationImages = [NSArray arrayWithObjects:
                [UIImage imageNamed:@"b0001.png"],
                [UIImage imageNamed:@"b0002.png"],
                // 150 more
                [UIImage imageNamed:@"b0152.png"],
                nil];

وأتذكر قليلا أن imageNamed: هو الشر. إذا كنت تفعل ذلك بهذه الطريقة، وأنا <م> هل لديك لتوفير الأشياء UIImage، ثم تلك الكائنات UIImage تحميل على الفور هذه الملفات الصورة في الذاكرة، أليس كذلك؟ وإلى جانب ذلك، كل هذه الأشياء 152 UIImage مكتنزة تأخذ استراحة كبيرة في الذاكرة لأن autoreleased أنها، غير أليس كذلك؟

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

وعلى أي حال، لا أحد يرى أي إمكانية تحسين هناك؟ أو ينبغي أن لا تستخدم ذلك واستخدام setImage: من UIImageView في خوارزمية الخاصة التي من شأنها أن تحميل ووضع تلك الصور مع محددات تأخر باستخدام هذا الشيء imageWithContentsOfFile مكتنزة (قد يكون اسمه مختلفة)، مع عدم وجود autorelease؟ ربما كتب بعض الرجل ذكي قليلا ليب لارتفاع فيدس الإبهام الأداء التي تتكون من تسلسل الصور؟

و(لا، الفيديو ليس خيارا على اي فون، والأطر التفاح لهذا يدعم فقط وضع ملء الشاشة، وأنا لا أعرف من أي شيء آخر من شأنه أن يفعل ذلك)

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

المحلول

وسوف أظل بعيدا عن محاولة تحميل هذا العدد الكبير من الصور في مجموعة UIImageView. وكان سؤال مماثل طلب هنا . ينبغي أن طريقة التخزين المؤقت أصف هناك أيضا ينطبق على حالتك.

نصائح أخرى

وأنت على حق حول imageNamed ... يجب أن لا تستخدم في كثير من الحالات لأنها تخزين داخليا الصورة. الاستخدام:

[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image1" ofType:@"png"];

والمرة الوحيدة التي تريد استخدام imageNamed هو عندما

1) كنت إعادة استخدام رمز مرارا وتكرارا (tableviews الخ ...)
2) أنت لم تنفذ نظام التخزين المؤقت الخاصة بك

scroll top