[英]UIViewController getting deallocated after dismissing a previously presented modal viewController
[英]Presented UIViewController not getting deallocated on dismissal
首先,我已经阅读了很多关于SO的答案,但我似乎仍然无法解决此问题。
在我的appDelegate,如果用户没有登录,我提出WelcomeViewController
从窗口的RootViewController的,这是一个实例MMDrawerController :
WelcomeViewController welcome = [[WelcomeViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:welcome];
[self.window.rootViewController presentViewController:nav animated:false completion:nil];
// NSLog(@"self.window.root: %@", self.window.rootViewController);
// gives <MMDrawerController: 0xdf578e0>
在某个时候,用户要么跳过要么成功登录,在这种情况下,我从WelcomeViewController触发以下代码:
// WelcomeViewController.m
- (void)userSuccessfullySignedIn
{
[self.presentingViewController dismissViewControllerAnimated:true completion:self.successBlock];
// NSLog(@"self.presentingViewController: %@", self.presentingViewController);
// gives <MMDrawerController: 0xdf578e0>
}
我以为我通过在presentingViewController
上调用dismiss而不是self
来做正确的事,但是从未调用过dealloc:
- (void)dealloc
{
NSLog(@"dealloc was called");
}
结果,即使我将其关闭,我的WelcomeViewController实例仍保留在内存中。 如您从我的控制台输出中看到的,呈现和关闭是在同一MMDrawerController实例中进行的。
我需要怎么做才能正确将其关闭并释放内存?
经过一天的苦战,事实证明这是Taplytics v1.2.24中的一个错误。 该错误已在1.2.32中修复。
它们在UIBarButtonItem上有一个类别,它们在其中进行一些方法修改,并且拥有对rightBarButtonItem(这是我的viewController)目标的强烈引用。 反过来又阻止了我的UIViewController释放。
驳回视图控制器是不一样的解除分配。 您需要将presentingViewController设置为nil.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.