9 Stimmen

Wie wird removeFromSuperview korrekt ausgeführt?

Apple sagt:

removeFromSuperview Entkoppelt den Empfänger von seiner Superansicht und seinem Fenster, und entfernt ihn aus der Kette der Responder.

  • (void)removeFromSuperview

Rufen Sie diese Methode niemals auf, während angezeigt wird.

Wenn ich also eine Ansicht loswerden möchte, habe ich mich daran gewöhnt, sie einfach aus ihrer übergeordneten Ansicht zu entfernen. Warum sollte ich das nie tun, wenn sie sichtbar ist? Muss ich sie also vorher auf hidden=YES setzen?

17voto

notnoop Punkte 57727

In der Spezifikation heißt es "während der Anzeige" und nicht "während der Anzeige". Daher sollten Sie niemals removeFromSuperview in der Ansicht drawRect zum Beispiel.

removeFromSuperview gibt die Ansicht frei und kann sie freigeben. Wenn die übergeordnete Ansicht versucht, die Ansicht anzuzeigen, erwartet sie möglicherweise nicht, dass die Freigabe aufgehoben wird, und verursacht einen fehlerhaften Zugriff.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X