2011-01-08 4 views
1

Wenn meine App startet lädt es 60 Bilder gleichzeitig in UIImageView und es lädt auch eine Hintergrundmusik.60 Bilder lokal laden schnell ist es möglich ...?

in Simulator es funktioniert gut, aber in IPAD stürzt ..

-(void)viewDidLoad 
{ 
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

//img.animationImages = [[NSArray arrayWithObjects: 

MyImages = [NSArray arrayWithObjects: 
         //[UIImage imageNamed: @"BookOpeningB001.jpg"],...... B099,nil]; 


//[NSTimer scheduledTimerWithTimeInterval: 8.0 target:self selector:@selector(onTimer) userInfo:nil repeats:NO]; 

img.animationImages = MyImages; 
img.animationDuration = 8.0; // seconds 
img.animationRepeatCount = 1; // 0 = loops forever 
[img startAnimating]; 
[self.view addSubview:img]; 
[img release]; 

[pool release]; 

//[img performSelector:@selector(displayImage:) ]; 

//[self performSelector:@selector(displayImage:) withObject:nil afterDelay:10.0]; 
[self performSelector: @selector(displayImage) withObject: nil afterDelay: 8.0]; 
} 


-(void)displayImage { 

SelectOption *NextView = [[SelectOption alloc] initWithNibName:nil bundle:nil]; 

[self presentModalViewController:NextView animated:NO]; 
[NextView release]; 
} 

mache ich etwas falsch? Gibt es eine andere Alternative, um die lokalen Bilder schneller in UIImageView zu laden!

+0

Dies sieht aus wie eine versehentliche Duplizierung oder ein Fehler: ChrisF migrierte (und so geschlossen) die ursprüngliche Frage, auf die unten verwiesen wird. –

+0

Ich möchte 60 Hot Dogs essen. Wenn sie mundgerechte Cocktail-Franks sind, könnte das möglich sein. Footlongs, auf keinen Fall. Bitte geben Sie Details zu den Bildern an. –

Antwort

3

Ich tat etwas ähnliches. Selbst wenn Sie alle anderen Apps auf Ihrem iPad beenden und es zum Laufen bringen, stürzt es nach dem Zufallsprinzip ab.

Ich habe dies durch Vorbelastung sehr kleine (wie 5 oder 6 k) gif Bilder behoben. Dann, als mein Benutzer einen Bereich betrat, in dem das große Bild gesehen werden musste, lud ich das gesamte Bild als JPG ein und gab das Objekt frei, sobald sie damit fertig waren.

Jetzt hat meine App kein Problem mehr auf dem Simulator oder dem Gerät und ich muss den Benutzer nicht alles schließen lassen.

1

Wenn etwas auf dem Gerät, aber nicht auf dem Simulator 9/10 Mal abstürzt, hat Ihre App ein paar Speicher Warnungen erhalten und gezwungen, zu beenden.

Diese Theorie kann leicht auf zwei Arten getestet werden. Zuerst wird in der Ereignisereignismethode appDelegates Memory Warning etwas protokolliert, und zweitens, wenn Sie die App im Simulator ausführen, öffnen Sie den Aktivitätsmonitor und zeigen Sie die Speichernutzung der App anhand des Namens an.

Die goldene Regel ist, dass Sie ein Bild so niedrig wie möglich verwenden sollten.

Rohit, ist richtig zu sagen, dass das Vorladen kleinerer Bilder eine Möglichkeit ist, dieses Problem zu lösen, vorausgesetzt, dass Sie nicht leckt, aber diese Lösung ist nur für bestimmte Anwendungen geeignet.

Faul laden Medien ist in der Regel, wie Sie dies tun sollten. Es gibt keinen Grund, warum Sie mehr als 3 vollständige Bilder (Vollbild) zu einem beliebigen Zeitpunkt in einer iPad-App laden sollten, wenn Sie ein anständiges, speichereffizientes Design implementieren.

In dem Fall, in dem Sie beispielsweise eine Diashow erstellen, sollten Sie nur das fokussierte Bild + 1 Bild auf jede Seite in den Speicher laden, wobei Sie Bilder außerhalb des Oszilloskops zerstören. Die Verwendung einer UIScrollView macht dies einfach mit Ereignissen, die ausgelöst werden, wenn das Scrollen gestartet, ausgeführt und beendet wird.

Geschwindigkeit Verbesserungen können gemacht werden mit CATitledLaye r, Multithreading alle Image-Aufgaben können Sie (GCD und Blöcke) (UIKit Kontexte sind nun auch thread sicher).

Viel Glück gibt es viele Beispiele von all diesen Dingen zugänglich über die Apple-Dokumentation oder eine schnelle Suche.

Verwandte Themen