2010-01-17 7 views
1

Existe-t-il quelque chose de similaire à une liste circulaire liée disponible dans Cocoa?Liste chaînée circulaire dans Cocoa

Je sais qu'un NSArray est commandé - mais je ne pense pas que je peux utiliser 'nextItem' ou 'previousItem' - correct? En outre, j'ai besoin de l'élément suivant du dernier élément pour être le premier élément.

Je pourrais ajouter mes propres méthodes nextItem et previousItem, mais je suis surpris si Apple n'a pas déjà implémenté quelque chose de convenable. Je ne peux pas le trouver si elles l'ont fait.

Répondre

3

Alors que vous pouvez certainement utiliser une catégorie pour ajouter le comportement à NSArray (comme @darren suggère), il est possible que vous pouvez avoir besoin d'un véritable tampon circulaire. Si c'est le cas, consultez le cadre CHDataStructures. Outre un CHCircularBufferStack, il y a aussi un CHCircularBufferQueue et un CHCircularBufferDeque.

+0

Est-il possible de lier un NSArray à une structure CHData? Si c'est le cas, il vaut vraiment la peine de les examiner. –

+0

NSArrayController, je veux dire. –

+1

Je n'ai pas codé explicitement pour un tel comportement, donc si vous ne pouvez pas, ce n'est pas encore supporté. Cependant, j'ai prévu de transformer la classe parent circulaire circulaire abstraite dans une sous-classe de NSMutableArray, qui fournirait probablement une partie de cette fonctionnalité gratuitement. (Libre à vous, pas moi en tant qu'auteur ...) –

1

Je ne suis pas au courant d'une telle structure de données de liste circulaire. Votre idée de l'implémenter manuellement semble être une bonne idée. J'utiliser une catégorie:

@implementation NSArray (myCircularList) 

-(id)nextItem; 
-(id)previousItem;