2010-10-21 16 views
0

Je voudrais savoir comment supprimer les opérations en double, c'est-à-dire comment vérifier la file d'attente nsoperation et voir si je fais une demande en double?NSInvocationOperation Question

Fondamentalement, je demande des images en fonction de la rotation de l'écran de l'iPhone. Lorsque la vue est chargée, shouldautorate est appelée deux fois.

If(rotation==portrait){ 
    request portrait image. 
} 

Le problème est que shout autorotate sera vérifiée deux fois. Et sur les deux ocassions, il s'avérera être portrait, demandant deux fois la même image. Quelqu'un avec une bonne idée? J'ai oublié de mentionner que j'utilise une file d'attente.

Merci.

Répondre

1

NOUVEAU, meilleure réponse:

Ne pas utiliser la méthode shouldAutorotate.... Seul le demande si une rotation est autorisée. Cela peut arriver n'importe quand et ne pas nécessairement entraîner une rotation. Au lieu de cela, utilisez willRotate... ou didRotate..., car ces méthodes sont seulement appelées exactement une fois et seulement si la rotation se produit réellement.

Votre opération sera alors ajoutée une seule fois.


VIEUX, mais pas fausse réponse:

Que diriez-vous d'utiliser une variable d'instance pour se rappeler la dernière rotation vu? Comme si:

if (rotation != lastSeenRotation) { 
    // REQUEST image here 
} 
+0

Yer J'ai pensé à cela mais n'est-ce pas hacky? – user281300

+0

Oh bien nvm, s'en tiendra à ça. C'est beaucoup plus simple que de vérifier ma file d'attente et de voir si j'ai des doublons. La prévention est meilleure. – user281300

+0

On m'a dit que nous ne devrions pas utiliser la méthode shouldautorotate et utiliser la méthode willrotate ou didrotate. – user281300