2009-04-09 5 views
4

J'utilise environ 20 UIImageView s d'images de petits avions (50x50 pixels) faisant de l'animation simple sur l'écran de l'iPhone. L'animation est effectuée en déplaçant la propriété du centre UIImageView à l'intervalle du minuteur.NSTimer est-il cher?

[NSTimer scheduledTimerWithTimeInterval:0.01 
           target:self 
           selector:@selector(timerFired:) 
           userInfo:nil 
           repeats:YES] 

Quelle est la meilleure pratique: créer une NSTimer et boucle les 20 UIImageView s pour définir la propriété du centre lors de la cuisson minuterie? Ou devrais-je simplement créer un objet NSTimer par UIImageView? La ressource NSTimer coûte-t-elle cher?

+0

Je crée un objet PlaneView dérivant de UIImageView. La minuterie est exécutée dans chaque objet PlaneView au lieu de dans le ViewController qui a la sous-vue PlaneView. Je suis encore en train d'expérimenter ... :-) –

Répondre

4

Je ne pense pas que ce que beaucoup de ressources, mais le bon sens semble dicter que l'utilisation 1 minuterie est probablement mieux que 20.

On dirait que votre minuterie est mis à feu 100 fois par seconde, ce qui semble un peu excessif. Est-ce que vous animez chaque sprite à chaque déclenchement? Peut-être essayer de tirer 20-30 fois par seconde à la place (ou peut-être même moins).

Vous pouvez également vous intéresser aux fonctions d'animation intégrées. On dirait qu'ils fonctionneraient probablement très bien pour ce que vous faites.

+0

Au rythme, je pourrais imaginer que le surcoût d'Objective-C puisse être assez cher. –

+0

En ce qui concerne le taux d'allumage: les LCD se rafraîchissent généralement à 60 Hz, donc essayer d'animer plus souvent que cela est en fait excessif. –

2

Vous pouvez essayer les deux et utiliser les outils de profil intégrés fournis avec Xcode pour évaluer l'utilisation des ressources.

Questions connexes