Frage

Immer wenn ich einen neuen ViewController hinzufüge, springt mein ObjectAlloc sehr hoch und kommt nie wieder herunter.Auch nach dem Aufruf von „removeFromSuperview“.Ist das normal?

if((UIButton *) sender == gameArcadeBtn) {
        GameArcade *gameArcadeController = [[GameArcade alloc] 
                              initWithNibName:@"GameArcade" bundle:nil]; 
        self.gameArcade = gameArcadeController; 
        [gameArcadeController release]; 
        [self.view insertSubview:gameArcadeController.view atIndex:1];
    }
War es hilfreich?

Lösung

Beim Instanziieren einer Ansicht werden immer viele Objekte erstellt. Solange sich diese Ansicht im Speicher befindet oder nicht automatisch freigegeben wurde, bleiben die Objekte im Speicher zugeordnet.Um Ihre Frage zu beantworten: Das ist normal.

Es hört sich so an, als ob Sie sich Sorgen über die Speichernutzung machen, und obwohl es wichtig ist, die Objektzuordnungen zu überwachen, damit es nicht zu Problemen kommt zu Es ist wichtiger, Ihre App-Lecks zu finden.

Einige Tipps zur Speicherverwaltung:
1) Lazy Loading durchführen.Laden Sie Ihre Ansichten nur, wenn der Benutzer danach fragt, nicht alle zu Beginn der App
2) Entfernen Sie alles, was Sie können, wenn Sie es nicht mehr benötigen.Das bedeutet, dass in viewWillAppear und viewDidDisappear eine Menge Arbeit geleistet werden muss
3) Erfahren Sie mehr über @properties und wie es mit der automatischen Freigabe zusammenhängt, und verwenden Sie Eigenschaften nicht für alles.
4) So verlockend es auch ist: Vermeiden Sie die automatische Freigabe und geben Sie Objekte manuell frei, wenn Sie sie nicht mehr benötigen.

Andere Tipps

das ist wahrscheinlich aufgrund der Tatsache, dass Sie immer noch die Ansicht der Controller in der Klasse halten sind. versuchen, die Freigabe, dass

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top