2016-04-28 93 views
1

我在XCode7.3中使用SpriteKit & GameCentre製作Swift 2.2應用程序。快速無限內存增長

我的問題是應用程序使用的內存在不斷增加(每秒約增加20MB)。最終這會導致應用程序因內存問題而崩潰。我在設備(iPhone 6s)&模擬器上得到類似的結果。

我已經在運行它通過儀器(截圖下面)去了,這似乎顯示的問題。

Instruments screenshot

從挖掘到儀器輸出,它似乎顯示出內存泄漏發生斷460 KIB malloc調用。我沒有設法從堆棧跟蹤中找出造成這種情況的原因。

儀器輸出可用 - 不確定如何附加在這裏。任何建議/指針從哪裏開始?

+0

對於這種規模的錯誤,有你正在做的事情錯在根本上一個不錯的選擇。你在代碼中使用了'malloc'嗎?你是否在需要它們的地方使用弱引用? – Holly

+0

代碼全是swift2 - 所以沒有直接使用malloc調用。如果我正確地讀取儀器輸出,實際的泄漏將發生在重複的malloc調用之外。 – samius

回答

0

嘗試二進制搜索您的代碼。評論一半你的電話。仍然有內存泄漏?好的,現在您已將搜索範圍縮小了一半。評論剩下的一半。沒有內存泄漏?太棒了,你只是將你的問題縮小到你的代碼的四分之一。一旦你開始得到導致泄漏的特定代碼,你將從StackOverflow中獲得更多有用的答案。

+0

對原始問題的模糊性抱歉 - 不幸的是我基本上被卡住了。我一直在瀏覽我的代碼並添加print語句來檢查每個方法調用何時發生,我也一直在評論大量的代碼。我現在已經把所有的東西都還原到了最低限度(我正在刪除代碼),內存泄漏只會加速(而不是大約20M的跳轉,現在內存現在跳躍了大約50M) – samius

0

已找到答案 - 原因是Apple/Spritekit代碼中的錯誤。

作爲設置場景的一部分,我將SKView的showFields設置爲true。一旦我禁用了這個(false),內存泄漏問題就會消失。

,從尋找這一點,我發現 - https://forums.developer.apple.com/thread/27870