UINavigationController导航栏行为可能是由于内存泄漏引起的吗?

问题描述

| 我得到了奇怪的导航栏行为,例如,当我单击“后退”按钮时,显示的屏幕是前一个屏幕,但是导航栏项目确实发生了变化。因此,我剩下的是屏幕A,但屏幕B带有导航栏按钮。 这可能是由于内存泄漏引起的吗?我确实在我的应用中注意到: 这种现象似乎发生了: 如果我触发记忆立即 通过模拟器菜单发出警告,或 开机后在设备上 一段时间[没有被杀死 然后作为应用重新启动]。 我确实有一些内存泄漏 尝试清理(即Profiler 突出显示“泄漏的块”中的项目 部分) 关于故障查找根本原因的任何提示,为什么按下“后退”按钮将最终变成怪异状态?例如屏幕在上一个父视图上显示,但导航栏项保持不变... 更新-我终于消除了应用程序中的内存泄漏,但是我注意到导航栏问题仍然存在。我想这并不能确认我的问题的答案是否定的,但是在我的具体情况下,这不是备忘录泄漏...     

解决方法

        从苹果公司:   导航控制器更新   每次顶视图时导航栏   控制器更改。因此,这些   每次查看都会发生更改   控制器被推入堆栈或   从中弹出。当动画一个   推送或弹出操作,导航   控制器类似地动画   更改导航栏内容。 基于此,我将从在视图定义中查找错误或配置错误开始。如果通过NIB定义了视图,请检查是否有InterfaceBuilder警告。确保两个UIViewControllers中的视图层次结构均正确。还要检查视图生命周期方法中可能存在的错误:bug0ѭ,
viewWillDisappear:
等。 实际上,如果您可以发布一些屏幕截图和/或代码,那就太好了。谢谢!     ,        当发生内存警告时,将释放所有当前不可见且仅由其视图控制器保留的视图(作为该视图控制器的view属性的一部分)(连同所有未保留的子视图)。 您可能会将视图创建为init的一部分,而不是将其保留在控制器中(只需让视图套接字阻止其释放)。解决此问题的一种方法是为创建的视图创建属性(非原子视图,保留视图),并在创建它们并自动释放之后将其分配给这些属性,不要忘记将这些属性分配给nil作为dealloc的一部分以避免泄漏。另一种方法是在viewDidLoad中创建与init相反的自定义视图元素。 没有令人讨厌的观点中没有代码示例的话很难说:)     ,        在调用calling2后,我已经看到类似的情况。除了调用beyond3以外,您可能不尝试对导航控制器的视图控制器进行任何编程操作。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...