1

我在我的主包中使用属性列表来存储关卡和玩家的信息。第一次启动应用程序时,pList 会被复制到手机上,然后我会根据需要从该本地副本中访问信息。我在 Instruments 中运行 Leaks,并且不断遇到我认为与创建字典和存储在 pList 中的其他数据类型有关的内存泄漏。

这是创建字典的位置 - 在找到 pList 的路径后:

if fileManager.fileExists(atPath: path.path) {

    if let dictionaryForPlist = NSMutableDictionary(contentsOf: path) {

        return(dictionaryForPlist)
    }
    else {
        print("pList not found")
    }

let levelInstanceData = LevelData() //this class searches the main bundle for the plist and stores the pList as an NSMutableDictionary
let currentLevel = levelInstanceData.localDataFile["Level1"] as! Int //localDataFile is the NSMutableDictionary storing the information
let levelName = levelInstanceData.localDataFile["Level1Name"] as! String

我强制将每条数据转换为正确的数据类型,并在整个关卡中使用它。

这是 Instruments 中泄漏对象的屏幕截图。有没有其他人遇到过这个问题或有任何想法如何阻止泄漏?

4

1 回答 1

1

提供所有泄漏的对象并没有太大帮助。您需要做的是查看与每个泄漏对象相关的调用树。这将向您展示代码中泄漏的来源。从那里你可以开始推断需要做些什么来补救它。

你应该读这个。它已过时,但它讨论了调用树。

https://www.raywenderlich.com/2696/instruments-tutorial-for-ios-how-to-debug-memory-leaks

于 2016-10-11T20:03:22.330 回答