我很好奇,当一个人继续执行他们的代码以便使用Instruments进行泄漏检查时 - 是否谨慎地手动点击应用程序的所有部分以确保在相应区域中发生内存泄漏?例如,我相信我的应用程序中有一些内存泄漏,深入UINavigationController树.我是否继续运行应用程序检查泄漏,同时手动向下钻取iPhone以进入应用程序的这一部分?仪器是否足够智能,可以自行找到它?什么是正确的方法?
感谢您的任何见解!
不,仪器只是监控你的代码的内存分配,它不会"去"任何地方,除非你的应用程序去那里.实际上,泄漏只不过是一段记忆,不再存在参考; 因此它不能再被释放,因为如果你甚至不能再参考它,将来如何释放它?
但是,仪器不会发现所有内存泄漏.如果您保留对内存的引用,只是永远不要使用它们来释放内存,仪器不会将其视为泄漏,因为它无法预见您将来是否会将其释放.因为你仍然可以释放它,它不被认为是泄漏.因此,如果您遇到内存问题,不仅要查找泄漏,还要监视应用程序在一段时间内"收集"的内存量,这可能会有所帮助.如果它永久地上升,即使它不应该,你可能仍然有泄漏,只有你没有丢失对内存的引用.