Утечка памяти при использовании списка свойств / 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