2010-03-28 4 views
2

J'ai une application qui doit obtenir des données de la base de données Sqlite afin d'afficher le premier élément à l'utilisateur.iphone threading accélérer le démarrage de l'application

J'ai créé un objet de domaine qui enveloppe l'accès à la base de données et qui est un singleton sans thread.

Cette stratégie est-suivante optimale pour assurer la plus rapide charge donnée les capacités de gestion d'accès aux fichiers de l'iPhone et de la mémoire dans les applications taraudés:

1) Dans le cas FinishedLaunching de AppDelegate la première chose que je fais est de créer le domaine singleton au sein un nouveau fil. Cela entraînera l'objet domaine à aller à Sqlite et obtenir les données dont il a besoin sans verrouiller le thread UI.

2) J'appelle ensuite les méthodes standard de fenêtre pour ajouter la vue et MakeKeyAndVisible etc.

Y at-il un stade plus précoce dans le AppDelegate où je tirer hors du fil qui crée l'objet de domaine et accède SQLite?

Répondre

1

Heh, vous pouvez aller jusqu'au point d'entrée d'exécution de l'application et créer votre propre thread avant d'invoquer UIApplicationMain ... c'est exagéré. ApplicationDidFinishLaunching est le meilleur endroit pour le faire, si vous êtes préoccupé par le chargement rapide, une meilleure approche serait de mettre en cache les données dans votre plist ou NSUserDefaults et de le mettre à jour quelques centaines de millisecondes plus tard lorsque la base de données est prête.