我一直在努力解决这个问题,我注意到许多人通过阅读这里和其他论坛上的很多帖子来发现同样的事情。就在今天早上,我意识到我做错了什么,我想分享它,以防将来有人绊倒它。
我的实现中的问题是在视图控制器(VC1)的viewDidLoad中我将其view属性设置为新的视图控制器(VC2),这迫使我相信框架退出VC1的viewDidLoad而没有到达它的结尾,因此不是调用视图控制器的后续委托函数:viewWillAppear,viewWillDisappear,viewWillAppear和viewWillDisappear!
所以我的解决方案是延迟所有与创建和设置VC2有关的代码,从viewDidAppear而不是viewDidLoad中调用。如果从viewWillAppear执行此操作,您将遇到同样的问题。
希望它有所帮助 AF
答案 0 :(得分:1)
为什么要为了节省UIViewController的内存而烦恼呢?
sizeof(UIViewController)给出132个字节。即使知道一个视图控制器会创建一些支持对象,所以它会占用更多的内存,而这是过早优化的一个很好的例子。
我给你一个很好的机会,你已经去过的代码解决方案:
(a)边缘情况下的泄漏记忆 (b)未能对iOS进行进一步更新 (c)做任何除你自己以外的程序员调试的噩梦 (d)在几周内自己调试是一场噩梦
为什么不使用提供的框架编写您的应用程序并对其进行分析 - 如果这么少的内存导致您遇到问题,请执行您的解决方案。如果没有,请妥善保管。