【问题标题】:UIPickerView Causing leaks when connected via datasourceUIPickerView 通过数据源连接时导致泄漏
【发布时间】:2012-10-30 12:13:02
【问题描述】:

我创建了一个测试项目来确认我的内存泄漏: 项目文件:https://dl.dropbox.com/u/3703182/PickerView.zip

基本上,UIPickerView 通过 IB 连接到数据源。当它连接到数据源时,它会泄漏。如果没有,则不会泄漏。我需要将 UIPickerView 用于需要尽快发布的即将发布的应用程序,不幸的是,由于泄漏,它保证每 2 小时崩溃一次。尽管存在内存泄漏,但如何使用 UIPickerView 而不会崩溃?

编辑: 它只在设备上泄漏,而不是在模拟器中。

【问题讨论】:

  • 重现泄漏的具体步骤是什么。当我尝试运行您的代码时,它没有显示任何选择器,我不得不将其从内部视图移到外部视图以使其显示。但是,在这两种情况下我都看不到任何泄漏。您可以尝试上传显示泄漏的确切代码吗?
  • 这是显示泄漏的确切代码。我应该提到你必须在设备上运行它,因为模拟器没有显示泄漏。单击Picker 按钮,然后单击back。在 Instruments 中做一个快照,它会显示这些泄漏:img844.imageshack.us/img844/5200/screenshot20121113at633.png
  • 我不认为,你的应用程序会因为这个泄漏而崩溃。检查是否有其他东西正在使用大量内存。截图中的泄漏显示了一些框架,你不必担心。

标签: iphone ios memory-leaks uipickerview


【解决方案1】:

这不是泄漏。这是一个分配。 如果是泄漏,它将在第二行显示红色尖峰。 泄漏的真正测试是多次呈现和消除。如果你能做到这一点并表明分配不断增加,那么就会有泄漏。不然。

【讨论】:

  • 我确实多次展示和关闭它。名单不断增长。有没有其他办法?
【解决方案2】:

添加我的 cmets 作为答案,

您的应用程序不会因为此泄漏而崩溃,因为它是由框架引起的非常小的泄漏,您不必担心。屏幕截图显示它是几个字节。如果您的应用程序每 2 小时崩溃一次,这意味着还有其他东西正在使用大量内存。请检查您是否在代码中使用了任何其他可能导致此问题的内容,并根据您的发现更新问题。

在分配工具中,请确保您正在检查活动字节部分并检查它增加了多少。如果它保持在 15-20 MB 以下,则无论如何您都不必担心。检查此以获取有关memory usage in app 的更多详细信息。还要检查这个XCode Instruments Allocations: Look at Live Bytes or Overall Bytes?

【讨论】:

    【解决方案3】:

    这是泄漏的 Apple 库。你对此无能为力。这是苹果的错。

    【讨论】:

    • 对不起,没有。这应该不会对您的应用产生太大影响,因为如果您仔细观察,框架泄漏的很少。
    【解决方案4】:

    这不是您可以控制的泄漏,它是内部的……但这只是很小的内存量,不会使您的应用程序崩溃。我很想看看这看起来像一个小时......你能提供崩溃的回溯吗?这可能会更好地帮助确定崩溃的真正原因。

    【讨论】:

      猜你喜欢
      • 2014-08-03
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      • 2011-01-22
      相关资源
      最近更新 更多