我有一个带有4个标签的标签栏应用程序,代码中没什么了不起的。
所有模拟器测试都很好,应用程序没有崩溃,一切都很好,Xcode中没有显示警告或错误(我使用Xcode 4.2,应用程序使用故事板)。
运行'analyze'时,代码中没有泄漏,错误或潜在的泄漏。
当运行'泄漏'时,没有列出泄漏,我可以加载,重新加载,在标签之间交换等等,一切都很好。
但是,当我在iPhone上运行时,会出现很多泄漏!
其中一些似乎是在代码中全部发布并且看起来很好,所有在Xcode中都可以正常验证。
为什么在模拟器上手机上运行的这种情况有所不同,如何查找和调试在模拟器上运行泄漏时不会显示的泄漏?
答案 0 :(得分:0)
首先,通过将检查范围(使用左右范围按钮)限制到发生泄漏的区域,可以检查较小的区域。然后,通过从左侧的Call Tree中选择一些有用的检查,例如Show Obj-C,Hide Missing Symbols等,那么您将从Instruments获得更多有用的信息。之后,单击与泄漏相关的其中一行,打开扩展视图并开始检查您的调用堆栈。此外,据我所知,双击泄漏线可以将您带到分配泄漏对象的源代码。这里要小心,因为它没有显示泄漏发生的位置,它显示了泄漏对象的分配位置。那么,你应该关注这些对象会发生什么。
关于模拟器和设备之间的区别,您可以查看this SO问题。
希望这些帮助!