Un autre moyen simple serait d'étendre NSMutableArray
en utilisant les catégories de l'Objective C. Vous pouvez le faire en ajoutant deux fichiers à votre projet :
NSMutableArray+Stack.h
@interface NSMutableArray (StackExtension)
- (void)push:(id)object;
- (id)pop;
@end
NSMutableArray+Stack.m
#import "NSMutableArray+Stack.h"
@implementation NSMutableArray (StackExtension)
- (void)push:(id)object {
[self addObject:object];
}
- (id)pop {
id lastObject = [self lastObject];
[self removeLastObject];
return lastObject;
}
@end
Maintenant, vous pouvez utiliser un NSMutableArray
dans tous les autres fichiers de votre projet comme une pile et appeler push
o pop
sur cet objet. N'oubliez pas de #import NSMutableArray+Stack.h
dans ces fichiers. Voici un exemple de code qui vous permettra d'utiliser votre nouvelle fonction NSMutableArray
comme une pile :
NSMutableArray *myStack = [[NSMutableArray alloc] init]; // stack size = 0
NSString *aString = @"hello world";
[myStack push:myString]; // stack size = 1
NSString *anotherString = @"hello universe";
[myStack push:anotherString]; // stack size = 2
NSString *topMostStackObject;
topMostStackObject = [myStack pop]; // stack size = 1
NSLog("%@",topMostStackObject);
topMostStackObject = [myStack pop]; // stack size = 0
NSLog("%@",topMostStackObject);
La sortie du journal sera :
hello universe
hello world