objective-c - 使用 UINavigationController 的 ARC 项目和发布屏幕

标签 objective-c ios uinavigationcontroller automatic-ref-counting

我有一个带有自定义后退/主页按钮的项目,当用户点击它时我调用:

  -(IBAction)backBtnTapped:(id)sender {
    [appDelegate.navController popToRootViewControllerAnimated:YES];
}

现在我看到它没有调用 viewDidUnload 方法。为什么?如何在ARC项目中强制卸载VC(以及其中的 View )?

最佳答案

方法 viewDidUnload 仅在出现内存警告时才会被调用,而不会在 View 超出屏幕时被调用,为此您可能需要使用 viewDidDisappear:viewWillDisappear

为了更好地解释 viewDidUnload 方法,你可以看看这个问题:When is UIViewController viewDidUnload called?

因此,您可能不需要关心 viewDidUnload 何时被调用,只需关心它需要执行的操作即可。另外,您正在处理 viewDidDisappear:viewWillDisappear 中需要处理的内容。

强制卸载可能不是解决这个问题的最佳方法,也许如果您在此方法中有很多逻辑,则需要将其更改为其他方法。不必担心调用release或dealloc,只需确保您的项目中没有循环引用,并且正确使用弱引用和强引用,以便弧可以正常工作。

希望对你有帮助!

关于objective-c - 使用 UINavigationController 的 ARC 项目和发布屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12179761/

相关文章:

ios - 导航栏中的 UINavigationItem 位置在方向上没有改变

ios - 导航 Controller 始终为零

iphone - iOS/Objective-C : SHA-1 and Base64

ios - 在同一中心位置缩放圆

ios - .h 文件中的变量与 Objective-C 中的 .m 文件相对

iphone - 如何在“点击手势”中设置两次点击之间的最大持续时间?

iphone - 如何使用 Objective-C 将 (x, y) 坐标存储在数组中?

ios - 以后发送电子邮件,恕不另行通知

ios - 如何使用 switch 语句更改 UIButton 的图像?

ios - 在我的场景大纲或 Storyboard 中看不到导航栏的导航项?