Ios 在解雇时未解除分配UIViewController

Ios 在解雇时未解除分配UIViewController,ios,iphone,objective-c,memory-management,uiviewcontroller,Ios,Iphone,Objective C,Memory Management,Uiviewcontroller,首先,我已经读了很多答案,但我似乎仍然无法解决这个问题 在我的appDelegate中,如果用户未登录,我将从窗口的rootViewController中显示WelcomeViewController,它是以下的一个实例: 因此,我的WelcomeViewController实例仍保留在内存中,即使我已将其删除。正如您可以从我的控制台输出中看到的,呈现和取消是在同一个MMDrawerController实例中进行的 我需要做什么才能正确地解除它并释放它的内存?解除视图控制器与解除分配不同。您需要

首先,我已经读了很多答案,但我似乎仍然无法解决这个问题

在我的appDelegate中,如果用户未登录,我将从窗口的rootViewController中显示
WelcomeViewController
,它是以下的一个实例:

因此,我的WelcomeViewController实例仍保留在内存中,即使我已将其删除。正如您可以从我的控制台输出中看到的,呈现和取消是在同一个MMDrawerController实例中进行的


我需要做什么才能正确地解除它并释放它的内存?

解除视图控制器与解除分配不同。您需要将presentingViewController设置为
nil。

经过一天的恶化后,发现这是Taplytics v1.2.24中的一个bug。该错误在1.2.32中修复


他们有一个关于uibarbuttoneim的分类,在那里他们做一些方法旋转,并且持有一个对rightbuttoneim的目标(这是我的viewController)的强烈引用。这反过来又阻止了我的UIViewController解除分配。

关于解除分配的观点与解除分配不一样,但
presentingViewController
是只读的,不能设置为零。是的,我完全误解了这一点。。。误读陈述。即使不是只读的,将其设置为nil也不会起任何作用。奇怪的是,它没有被解除分配。。。进行演示的视图控制器的强引用现在应该消失了,因此,除非您在某个地方对它进行了另一个强引用,否则我认为它应该被释放。@BenPious在您的文本下面有一个编辑按钮。如果你有印刷错误,你总是能够修复它,清理你的业力。不客气。您说您是从根视图控制器显示欢迎控制器,但您发布的代码是显示导航控制器。这是错别字吗?不,不是错别字,只是觉得没关系。在
userSuccessfullySignedIn
中,如果我登录
self.navigationController.presentingViewController
我仍然会得到相同的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.m
- (void)userSuccessfullySignedIn
{
    [self.presentingViewController dismissViewControllerAnimated:true completion:self.successBlock];
    // NSLog(@"self.presentingViewController: %@", self.presentingViewController); 
    // gives <MMDrawerController: 0xdf578e0>
}
- (void)dealloc
{
    NSLog(@"dealloc was called");
}