内存未在ios视图层次结构中发布

内存未在ios视图层次结构中发布,第1张

概述我有一个使用ARC的iOS应用程序.我不使用InterfaceBuilder,所有UI都是手动生成的.在那个应用程序中,我有几个带有SubViewControllers的UIViewControllers.那些ViewControllers是从一个菜单(-ViewController)绑定在一起的,它将它们推送到堆栈上. 我的问题是,在ViewControllers之间切换时,内存不会被释放. 像 我有一个使用ARC的iOS应用程序.我不使用InterfaceBuilder,所有UI都是手动生成的.在那个应用程序中,我有几个带有SubVIEwControllers的UIVIEwControllers.那些VIEwControllers是从一个菜单(-VIEwController)绑定在一起的,它将它们推送到堆栈上.

我的问题是,在VIEwControllers之间切换时,内存不会被释放.

像这样保持对SubVIEwControllers的引用是错误的吗?

@property (nonatomic,strong) UIVIEwController subVIEwController1; @property (nonatomic,strong) UIVIEwController subVIEwController2;

vIEwDIDUnload永远不会被调用.有没有人如何建立一个干净的视图层次结构的好例子?

解决方法 这很可能与ARC无关.仅当视图属性被释放/设置为nil时,才会在视图控制器上调用vIEwDIDUnload,这通常仅在应用程序收到内存警告时才会发生.

尝试在模拟器中触发内存警告,看看是否会导致vIEwDIDUnload方法触发.如果它确实那么一切都很好.如果没有,你可能会以某种方式过度保留你的观点,也许是通过将它们分配给其他强烈保留的属性.

视图保留策略有例外,例如UINavigationController在视图控制器堆栈中释放视图(如果它们不在最前面),但它只是通过简单地将其子控制器的视图设置为nil来实现这一点.另一个控制者的观点.

如果您希望在不在屏幕上时释放视图,请在vIEwDIDdisappear:方法中将控制器的视图属性设置为nil,或者在视图不在屏幕上时停止保留视图控制器,并且每次只创建新的控制器实例你需要显示它们(这样,控制器和视图都将在不使用时释放).

总结

以上是内存溢出为你收集整理的内存未在ios视图层次结构中发布全部内容,希望文章能够帮你解决内存未在ios视图层次结构中发布所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1052738.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存