gpt4 book ai didi

iOS - 弹出到上一个 viewController 后未调用 viewController dealloc 方法

转载 作者:可可西里 更新时间:2023-11-01 04:29:52 25 4
gpt4 key购买 nike

在 iOS 中,我从当前的 viewController 弹出到前一个,但它没有进入 dealloc。

这是因为有另一个指向当前 viewController 的指针,要么在不同的 viewController 中,要么在当前的 viewController 中?

这是我弹出到上一个 View 的地方:

- (IBAction)fileUploadCancelTouched:(UIButton *)sender {

[self.fileToUpload cancel];

[self.view hideToastActivity];
[self.greenprogressBar removeFromSuperview];
[self.subView removeFromSuperview];
self.fileUploadCancelButton.hidden = YES;
if (self.commandComeBackToFinalScreen == 1) {
[self.navigationController popViewControllerAnimated:YES];
}
}

这是我的 dealloc 函数:

- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];

self.greenprogressBar = nil;
self.fileUploadCancelButton = nil;
self.fileToUpload = nil;
[buttonHome_ release];
[buttonTestMeAgain_ release];
[buttonMarkMyTest_ release];
[examId_ release];
[sender_ release];
self.ob = nil;
[_fileUploadCancelButton release];
[super dealloc];
}

最佳答案

检查以确保您的项目中未启用 ARC。如果它未启用 ARC,则应调用 dealloc,除非您的代码保留了您的 View Controller 。您应该通过 Instruments 工具检查您的 pop 命令是否减少了内存。

可能还有其他一些原因,正如我在下面发布的另一个答案中提到的:显而易见的原因是某些东西保留了您的 viewController。您将不得不仔细查看您的代码。你在你的类(class)中做了任何使用委托(delegate)的事情吗,因为他们有时会保留委托(delegate)。 NSURLConnection 将保留您的类,NSTimer 也是如此。您可以在类(class)中分散代码并记录类(class)的保留计数,并尝试找出位置。在您目前显示的代码中,保留值应该仅为 1,因为该类仅由导航 Controller 保留。

此外,在弹出 View 之前,获取对它的引用,弹出它时不带动画,然后向它发送一些消息,让它报告保留计数(这将是您编写的一些新方法)。这个新方法还可以记录其他事情,比如它是否有任何定时器、NSURLConnections 等。

关于iOS - 弹出到上一个 viewController 后未调用 viewController dealloc 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23388962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com