removeFromParentViewController müssen Sie auf nil danach?

Kann ein Kind view-controller "selbst entlassen?" .....


Haben Sie eine view-controller "RedMessage". Sie haben eine gewöhnliche starke Eigenschaft für Sie ...

@property (strong) RedMessage *rot;

Fügen Sie es ("Modal") ganz oben auf Ihrer aktuellen VC...

self.red = (RedMessage *)[self.storyboard
     instantiateViewControllerWithIdentifier:@"RedMessageID"];
self.red.view.frame = self.view.frame;
[self.view addSubview:self.red.view];
[self addChildViewController:self.red];
[self.red didMoveToParentViewController:self];

Loszuwerden, es später tun dies

[self.red willMoveToParentViewController:nil];
[self.red.view removeFromSuperview];
[self.red removeFromParentViewController];

ABER IN der TAT, Sie brauchen, um dies zu tun??

[rm willMoveToParentViewController:nil];
[rm.view removeFromSuperview];
[rm removeFromParentViewController];
rm = nil;

Braucht man das "= null;" ?

Beachten Sie, dass diese Frage kritisch ist, weil: wenn Sie NICHT AUF null, Sie können dann Folgendes tun in der neuen view-controller...

-(void)dismissMyselfCompletely
    {
    [self willMoveToParentViewController:nil];
    [self.view removeFromSuperview];
    [self removeFromParentViewController];
    }

Welche ist sehr bequem.

Kurz gesagt, wenn Sie tun, dass in der neuen top-view-controller - wird es "Arbeit", Sie befreit den VC?

Wenn removeFromParentViewController passiert, hat der Elternteil VC verstehen, es kann loslassen selbst.rot?

  • Kopfgeld für authorative Referenz.
  • Leider bieten eine Antwort, aber wir haben testen es ausgiebig und fand das Ergebnis in die Antwort ... hoffe es hilft jemandem!!
InformationsquelleAutor Fattie | 2014-10-12
Schreibe einen Kommentar