Утечка памяти при использовании списка свойств / NSMutableDictionary

Я использую список свойств в своем основном комплекте для хранения информации об уровнях и игроке. При первом запуске приложения pList копируется на телефон, а затем я получаю доступ к информации из этой локальной копии. Я запускаю утечки в инструментах, и я продолжаю сталкиваться с утечками памяти, которые, по моему мнению, связаны с созданием словаря и других типов данных, хранящихся в списке 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

Я принудительно приводил каждый фрагмент данных к правильному типу данных и использую его на всех уровнях.

Вот скриншот утечки объектов в инструментах. Кто-нибудь еще имел эту проблему или есть идеи, как остановить утечки?

1 ответ

Предоставление всех пропущенных объектов не слишком полезно. Что вам нужно сделать, это посмотреть на дерево вызовов, связанных с каждым утекшим объектом. Это покажет вам, откуда в коде произошла утечка. И оттуда вы можете начать делать выводы о том, что нужно сделать, чтобы исправить это.

Вы должны прочитать это. Оно датировано, но в нем обсуждается дерево вызовов.

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

Другие вопросы по тегам