Ich versuche eine einfache Anwendung zu erstellen, in der der Benutzer Notizen durchgehen und dann ein Quiz machen kann. Ich präsentiere diese Notizen als Bilder und das Bild würde einem UIImageView
zugewiesen werden, um dem Benutzer gezeigt zu werden.Speicherverlust beim Drücken der Taste
Meiner Ansicht nach geladen habe ich meistens die Benutzeroberfläche einstellen. Dann würde ich mein Array erschaffen meine Anordnung von Bildern (Noten), die
- (void)viewDidLoad {
UIColor *colourForNavigationBar = [self colorWithHexString:@"919D9F"];
[[UINavigationBar appearance] setBarTintColor:colourForNavigationBar];
UIColor *colourForBackground = [self colorWithHexString:@"F0F3F4"];
self.view.backgroundColor = colourForBackground;
UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:27.0];
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor whiteColor];
self.navigationItem.titleView = label;
label.text = @"Notes";
[label sizeToFit];
UIColor *colourForButton = [self colorWithHexString:@"919D9F"];
self.previousButton.backgroundColor = colourForButton;
self.nextButton.backgroundColor = colourForButton;
finishedNotes = NO;
playerPlaying = NO;
arrayOfImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"1.png"],
[UIImage imageNamed:@"2.png"],
[UIImage imageNamed:@"3.png"],
[UIImage imageNamed:@"4.png"],
[UIImage imageNamed:@"5.png"],
[UIImage imageNamed:@"6.png"],
[UIImage imageNamed:@"7.png"],
[UIImage imageNamed:@"8.png"],
[UIImage imageNamed:@"9.png"],
[UIImage imageNamed:@"10.png"],
[UIImage imageNamed:@"11.png"],
[UIImage imageNamed:@"12.png"],
[UIImage imageNamed:@"13.png"],
nil];
}
Dann gibt es die Schaltfläche ‚Weiter‘, die der Benutzer zur nächsten Note zu weiter ermöglicht. Unten ist der Code für die Aktion
- (IBAction)nextNote:(id)sender {
if (finishedNotes == YES) {
[self performSegueWithIdentifier:@"quizFromNotes" sender:self];
}
self.previousButton.enabled = YES;
stateOfPhoto++;
if (stateOfPhoto < 13) {
UIImage *image = [arrayOfImages objectAtIndex:stateOfPhoto-1];
self.imageView.image = image;
}
if (stateOfPhoto == 13) {
UIImage *image = [arrayOfImages objectAtIndex:stateOfPhoto-1];
self.imageView.image = image;
[self.nextButton setTitle:@"Begin Quiz" forState:UIControlStateNormal];
finishedNotes =YES;
}
if (playerPlaying == YES) {
[self.notesPlayer stop];
playerPlaying = NO;
}
}
Alles funktioniert gut und reibungslos. Wenn jedoch die Bildänderung erfolgt, nimmt der von der Anwendung verwendete Speicher um einige Megabyte zu. Unten ist das Foto der Speicherbelegung.
Von der schwarzen Linie an, als ich die ‚next‘ Taste drücken, verwendet der Speicher erhöht. Es wiederholt sich nur, bis der Benutzer das Quiz fortgesetzt hat. Wenn ich das Quiz beende und die Notizen überspringe, steigt die Speichernutzung von der vorherigen Speichernutzung (73 mb) weiter an. Irgendwann würde die App abstürzen und ich kann die App nicht mehr starten.
Ich habe noch nie Speicherverlust Probleme konfrontiert und daher bin ich mir nicht sicher, was zu tun ist. Ich habe die letzte Stunde gegoogelt und bin nicht in der Lage, eine Lösung dafür zu finden. Meine Frage ist also, wie ich den Speicher freigeben oder die Speichernutzung reduzieren könnte.
Vielen Dank. Ich habe versucht, das Bild manuell zu vergrößern, aber es hat nicht funktioniert, aber das Skalieren des Bildes hat dazu beigetragen, die Speicherauslastung zu reduzieren. Danke für diese Antwort und Entschuldigung für die verspätete Antwort. –