2010-11-28 5 views
1

Dans cette question (http://stackoverflow.com/questions/1267474/itunes-xml-parsing-in-cocoa), Sreelal demande comment améliorer les performances de chargement/analyse d'un PLIST de grande taille. La question, cependant, n'a jamais eu de véritable réponse (bien que quelques indications très utiles aient été données par Alex). Peter Hosey a souligné que le fichier entier est chargé en mémoire même lorsque le PLIST est analysé au lieu d'être déversé dans un NSDictionary.Analyse syntaxique du PLIST et de l'empreinte mémoire

Dans une application Cocoa, je travaille avec les librairies Aperture et elles ont aussi de gros fichiers PLIST. Quelle est la meilleure approche pour avoir de bonnes performances (vitesse) et ne pas avoir votre application prenant toute la mémoire du système?

NSXMLParser est-il une bonne approche? Je préfère rester fidèle aux frameworks d'Apple si possible.

Merci

Répondre

1

Lorsque déconner avec de gros fichiers, j'utiliser une combinaison de NSXMLParser avec NSFileHandle ce qui vous permet de charger une partie des données à la fois sans le charger à la fois dans la mémoire. Apple a une vidéo WWDC complète sur developer.apple.com (si vous êtes un développeur enregistré) appelée Advanced Performance Optimizations sur iPhone OS. Dans ce cas, ils recommandent de ne pas utiliser le format PLIST pour les fichiers extrêmement volumineux, mais ils expliquent comment charger des fichiers dans des parties que vous pouvez ensuite utiliser NSXMLParser pour les analyser en petites parties (qui peuvent même être divisées en plusieurs threads). J'espère que cela t'aides!

+0

Merci pour le conseil, Justin. Je ne savais pas à propos de la session de la WWDC. Je vais certainement vérifier. –