Может ли контроллер детского просмотра «отклонить себя»? .....removeFromParentViewController - нужно ли вам потом?
У вас есть контроллер «RedMessage». У вас есть обычное прочное свойство для этого ...
@property (strong) RedMessage * red;
Вы добавляете его ("модально") в верхней части текущего 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];
Чтобы избавиться от него позже, сделать это
[self.red willMoveToParentViewController:nil];
[self.red.view removeFromSuperview];
[self.red removeFromParentViewController];
но на самом деле, не так нужно это сделать ??
[rm willMoveToParentViewController:nil];
[rm.view removeFromSuperview];
[rm removeFromParentViewController];
rm = nil;
Нужно ли «= nil;» ?
Обратите внимание, что этот вопрос имеет решающее значение, потому что: если вы НЕ ДОЛЖНЫ ноль это, вы можете сделать следующее внутри нового контроллера представления ...
-(void)dismissMyselfCompletely
{
[self willMoveToParentViewController:nil];
[self.view removeFromSuperview];
[self removeFromParentViewController];
}
Что очень удобно.
Короче говоря, если вы сделаете это в новом контроллере верхнего уровня - будет ли он «работать», он освободит VC?
Когда удаляетсяFromParentViewController, родительский VC понимает, что он может освободить self.red?
Bounty для справки. – Fattie
Извините, что предоставил собственный ответ, но мы тщательно его протестировали и нашли результат, указанный в ответе ... надеюсь, что это поможет кому-то! – Fattie