メインバンドルのプロパティリストを使用して、レベルとプレーヤーに関する情報を保存しています。アプリが最初に起動されたときにpListが電話にコピーされた後、そのローカルコピーから必要に応じて情報にアクセスします。私はInstrumentsでLeaksを実行しています。また、pListに格納されている辞書やその他のデータ型の作成に関連していると思われるメモリリークが続きます。プロパティリスト/ NSMutableDictionaryを使用したメモリリーク
辞書が作成されたのはここだ - 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
私は強制的に正しいデータ型へのデータの各部分をキャストし、レベル全体でそれを使用しています。ここで
インスツルメンツでリークしたオブジェクトのスクリーンショットです。他の誰かがこの問題を抱えていたのですか、あるいは漏れを止める方法がありましたか?
アップルSpriteKitベースのフォーラムでメモリリークに関するいくつかの質問があります。これは私が辞書で見た最初のものです。あなたは幸運かもしれません。最初にこれを見つける。 SKとバグ.... – Confused