作为测试我一次又一次地推动并弹出相同的视图......我将进入下一个屏幕并反复点击...我可以看到实时字节不断增加...
虽然应用程序中的其他位置我在显示表视图的2个屏幕之间出现,但是实时字节增加和减少相同的数量(第一次执行)。
那么我需要检查以了解发生了什么...在播放20分钟后,通常应用程序崩溃 - 请注意,任何时候都没有内存泄漏。
在我推送和弹出的第一个视图中,第二个屏幕有一个图片和一个文本字段。我需要这些特别的东西吗? 我还注意到我没有默认函数viewWillDisappear和viewDidDisappear ...我需要这些吗?这是强制性的吗?添加它们并没有改变任何东西......所以我需要在它们中添加一些特别的东西......
非常感谢任何帮助
干杯, geebee
答案 0 :(得分:1)
答案 1 :(得分:0)
在您正在推动的控制器的-dealloc
方法中放置一个断点,然后弹出以查看它是否会触发。如果没有,你会在某个地方保留对它的引用。这可能由于多种原因而发生。以下是一些可能性:
前面的视图控制器可能会保留对后继者的引用。这是不必要的,应该避免(UINavigationController将视图控制器保留在其堆栈中)。
您可能通过保留对保留视图控制器的对象的引用,在代码中引入了保留周期。如果您使用块并且不小心遵循内存管理规则,则很容易发生这种情况。
如果你做得对,你的视图控制器应该在从导航控制器弹出后解除分配。
答案 2 :(得分:0)
您可以使用Instruments的快照分析确切了解一段时间内的变化。
1)使用分配模板的配置文件
2)运行应用程序(导航)
3)点击“标记堆”按钮
4)运行应用程序(导航)
5)点击“标记堆”按钮
然后查看快照分析的结果。
当您的视图被卸载时,您应该将IBOutlet
置零,释放您可以轻松重建的内容,并释放可能被视为大量分配的内容。