2009-08-05 6 views
4

J'ai déjà eu une question comme celle-ci, mais je l'ai déjà supprimé de toute façon.iPhone Dev - Où mettre le code de chargement paresseux

J'ai une application très simple qui a un contrôleur de vue racine et il bascule entre deux autres vues du contrôleur de vue. Donc, dans mon contrôleur de vue racine, Il paresseux charge les instances des deux autres contrôleurs de vue. Chaque fois que le bouton de commutation de la barre d'outils est enfoncé, le contrôleur de vue en cours d'affichage (sa vue) est déchargé (défini sur zéro) et le nouveau est chargé et ajouté à la sous-vue. Depuis que je charge mes contrôleurs de vue et que je les décharge à des moments spécifiques, le code de chargement paresseux étant dans les getters est très déroutant car je ne veux pas vraiment les charger juste quand je les utilise, je dois les charger avant l'animation de flip aura l'air bien. Donc je pense que je veux faire des méthodes loadFirstVC et loadSecondVC pour charger les contrôleurs de vue. Est-ce une bonne idée?

Répondre

6

La principale raison de la charge paresseuse est de ne PAS différer le chargement qui se produira définitivement. C'est pour différer le chargement qui peut ne jamais être nécessaire. (C'est aussi bon pour forcer les rechargements lorsque les données ont changé, mais ce n'est pas votre problème ici.)

Exemple: Disons que vous avez un tas de données sur une personne, y compris une photo, qui est stockée dans un fichier externe . Mais la photo ne sera affichée que si l'utilisateur passe à une sous-vue, alors pourquoi charger la photo à partir de son fichier jusqu'à ce que vous soyez certain que la sous-vue va apparaître? Boom, utilisez le chargement paresseux.

Au moment où vous SAVEZ que vous voulez charger un certain élément de données, il est peu probable que ce soit très important lorsque vous le chargez exactement.

Quand est-ce important? Eh bien, c'est vraiment une question d'optimisation. Il y a un dicton que vous avez peut-être rencontré; Si ce n'est pas le cas, c'est aussi bon que n'importe quel autre: «L'optimisation prématurée est la racine de tout mal (programmation).

Alors vous poser deux questions:

  1. Est-ce que la donnée nécessaires définitivement? Si NON, passez à la technique de chargement paresseux. Si la réponse est OUI, passez à la question 2.

  2. Est-ce que cela COMPTE quand je charge les données? [Un exemple serait, c'est énorme et je ne veux pas le charger jusqu'à ce que j'ai DÉCHARGÉ quelque chose d'autre pour faire de la place pour cela] Si NON, placez-le n'importe quel endroit qui fonctionne. Si OUI ... Revenez nous demander à nouveau et fournir plus de détails.

... Je suppose que cela ne répond pas à votre question initiale, mais il semble que vous posiez la mauvaise question en premier lieu. Toutes mes excuses si je me trompe.

+0

Je pensais juste à implémenter le chargement paresseux sur certains contrôleurs de vue - mais me demandant vos 2 questions m'a convaincu de le laisser seul. – malaki1974

Questions connexes