2015-03-13 71 views
-1

今天出現了一個嚴重的問題。突然我的應用程序變成了一個不一致的狀態,我檢查了所有日誌(希望我已經將它們中的大部分都自動保存在一個文件中),並發現有一個不合需要的方法調用。該方法只是重置我的核心數據堆棧。iOS:由於內存泄漏導致的隨機方法調用?

我花了幾個小時試圖找出如何可能,但只發現了一些內存泄漏。內存泄漏是否可能導致錯誤的,隨機的,不合需要的方法調用?

更新: 我的錯誤,看起來像我的日誌應該更詳細。

回答

1

不,如果我們說不釋放分配的內存。這個bug會導致你只有可用的內存。

是的,如果我們說釋放內存後使用對象引用。如果對象不在那裏,通常應該以異常結束。在原始數據類型的情況下,你可能會碰到一個內存地址,它可以改變關鍵的東西 - 只要它在你的沙箱中。

示例:我是第一個應用程序,我從Core Data反序列化了一個int數組,但是我一直在寫比我之前分配的int數組更多的值。結果:在不同的類和核心數據中發生隨機崩潰。

是的,有可能以這種方式破壞數據 - 只是不太可能。

+0

它是一個C數組(我認爲不是,因爲反序列化被提及,但只是好奇),你有問題嗎?謝謝。 – Unheilig 2015-03-13 15:40:33

+0

在那個時候ints比NSNumber快得多,所以我出於性能原因走了那條路。沒有最好的解決方案。 :)這也只是一個例子,如何搞亂內存可能會出錯。那個bug讓我搜索了幾天。總之它不一定適用於你的情況。 – 2015-03-13 15:43:53

+0

所以這是一個C數組(不是由'NSInteger'構成的數組,我的意思是)你從CoreData中獲得的數組?我可以問,你怎麼終於能夠確定這個事業?再次感謝。 – Unheilig 2015-03-13 15:56:16