Je ne dirais pas que l'utilisation de NSMutableArray est nécessairement la meilleure solution, en particulier si vous ajoutez des méthodes avec des catégories, en raison de la fragilité qu'elles peuvent causer si les noms de méthodes entrent en collision. Pour une file d'attente rapide et sale, j'utiliserais les méthodes pour ajouter et supprimer à la fin d'un tableau mutable. Cependant, si vous prévoyez de réutiliser la file d'attente, ou si vous voulez que votre code soit plus lisible et plus évident, une classe de file d'attente dédiée est probablement ce que vous voulez.
Cocoa n'en a pas intégré, mais il existe d'autres options, et vous n'avez pas non plus à en écrire une à partir de zéro. Pour une vraie file d'attente qui ajoute et supprime uniquement des extrémités, un tableau de tampons circulaire est une implémentation extrêmement rapide. Découvrez CHDataStructures.framework , une bibliothèque / framework en Objective-C sur laquelle j'ai travaillé. Il a une variété d'implémentations de files d'attente, ainsi que des piles, des deques, des ensembles triés, etc. Pour vos besoins, CHCircularBufferQueue est beaucoup plus rapide (c'est-à-dire prouvable avec des benchmarks) et plus lisible (certes subjectif) que l'utilisation d'un NSMutableArray.
Un gros avantage de l'utilisation d'une classe Objective-C native au lieu d'une classe C ++ STL est qu'elle s'intègre parfaitement au code Cocoa et fonctionne beaucoup mieux avec l'encodage / décodage (sérialisation). Cela fonctionne également parfaitement avec le garbage collection et l'énumération rapide (tous deux présents dans 10.5+, mais uniquement ce dernier sur iPhone) et vous n'avez pas à vous soucier de ce qu'est un objet Objective-C et de ce qu'est un objet C ++.
Enfin, bien que NSMutableArray soit meilleur qu'un tableau C standard lors de l'ajout et de la suppression de chaque extrémité, ce n'est pas non plus la solution la plus rapide pour une file d'attente. Pour la plupart des applications, c'est satisfaisant, mais si vous avez besoin de vitesse, un tampon circulaire (ou dans certains cas une liste chaînée optimisée pour garder les lignes de cache à chaud) peut facilement écraser un NSMutableArray.
-count
avance pour vérifier s'il y a des objets à retirer de la file d'attente. C'est vraiment une question de préférence.