我开发了我的第一个应用程序并且仍在学习。昨天刚刚更新了 Xcode 5,我的 iPhone 5 运行的是 iOS 7.1。我现在正在努力了解 Instruments 工具来分析我的应用程序。我在 Instruments 中使用 Leak 配置文件并且遇到了我无法弄清楚的保留周期和泄漏。感谢我能理解的任何帮助 a) 如何查明错误 b) 我做错了什么以及如何在将来避免它。

在我的应用程序中,我正在使用相机拍照。当相机启动时,我点击屏幕进行对焦,这时我注意到 Instruments 中出现了泄漏。看起来我的代码中没有保留循环(如果我理解正确的话),并且我的代码中存在我不理解的根泄漏。

我正在使用 ARC ,所以我不应该在 Instruments 指向我的代码部分(下面的第 2 部分,带有代码)中释放“选择器”。

  • 我可以对保留周期做些什么。它不在我的代码中,但我仍然是它的原因吗?它是否源于“根泄漏”?如果我不对此负责,我该怎么办?


  • 我在此堆栈跟踪中的唯一代码无法帮助我了解泄漏的来源。行是 Instruments 在我的代码中指向我的是 [pickerdismissViewControllerAnimated:YES completion:nil];在我的 imagePickerController:didFinishPickingMediaWithInfo: 方法中。我正在粘贴下面的代码。



  • 编辑 - 我在其中创建 UIImagePickerController 的代码。

    最佳答案

    这是我的理论:您所遇到的显然是 Apple 自己代码中的错误(或缺陷),您所能做的就是疯狂地大笑并忘记它。

    为了测试我的理论,我运行了自己的代码,在不同的时间完全分开编写。它的作用与您的代码所做的几乎相同:它让用户拍照,然后将图像放入界面中。这是我的代码:

    https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch17p702takeAPicture/ch30p962takeAPicture/ViewController.m

    我使用 Leaks 工具在 Instruments 下运行我的代码,你猜怎么着?我看到了和你一样的问题。

    自然而然,我开始在 Stack Overflow 上搜索,结果发现所有这些都是老土。例如:

    UIImagePickerController memory leak on iOS5

    甚至 Apple 自己的示例代码,称为 PhotoPicker(或使用 UIImagePickerController 来选择图片和拍照)也有相同的泄漏。

    关于ios - 使用 Instruments 跟踪内存泄漏 Xcode 5 和 iOS 7,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22672551/

    10-11 14:52