【问题标题】:iOS: random method invocations due to memory leaks?iOS:由于内存泄漏导致的随机方法调用?
【发布时间】:2015-03-13 15:22:05
【问题描述】:

今天我遇到了一个严重的问题。突然我的应用程序进入了一个不一致的状态,我检查了所有日志(希望我有很多日志自动保存在一个文件中),发现有一个不需要的方法调用。该方法只是重置了我的核心数据堆栈。

我花了几个小时试图找出这是怎么可能的,但除了一些内存泄漏之外什么也没找到。内存泄漏是否可能导致错误的、随机的、不受欢迎的方法调用?

更新: 我的错误,看来我的日志应该更详细。

【问题讨论】:

    标签: ios debugging memory-leaks


    【解决方案1】:

    不,如果我们说不释放分配的内存。这个错误只消耗了你可用的内存。

    是的,如果我们谈到在释放内存后使用对象引用。如果对象不再存在,这通常应该以异常结束。在原始数据类型的情况下,您实际上可能会遇到可以更改关键内容的内存地址 - 只要它在您的沙箱中。

    示例:在我的第一个应用程序中,我从 Core Data 反序列化了一个 int 数组,但我写的值比我之前分配为 int 数组的要多。结果:不同类和核心数据中的随机崩溃。

    是的,以这种方式破坏数据是可能的——只是不太可能。

    【讨论】:

    • 它是一个 C 数组(我认为不是,因为提到了反序列化,但只是好奇)你有问题吗?谢谢。
    • 当时 ints 比 NSNumber 快得多,所以出于性能原因,我采用了这种方式。不是最好的解决方案。 :) 这也只是一个例子,如何弄乱内存会出错。那个错误让我搜索了几天。无论如何,它不一定适用于您的情况。
    • 所以它是一个 C 数组(不是由 NSInteger 组成的数组,我的意思是)你从 CoreData 得到的?我可以问一下,您是如何最终确定原因的?再次感谢。
    • 由于 Core Data 似乎有问题,我正在研究所有与 Core Data 相关的代码。然后注意到我尝试将 100 个值存储在具有 25 个值的 c 数组中。复制并粘贴具有 25 个值的类似方法,我只是忘记调整该代码。
    • Gerne.:) Esist immer schwer von aussen auf ein Problem zu sehen.
    猜你喜欢
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 2013-07-23
    相关资源
    最近更新 更多