Другим простым способом было бы расширить возможности NSMutableArray
, используя категории Objective C.Вы можете сделать это, добавив два файла в ваш проект:
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
Теперь вы можете использовать обычный NSMutableArray
в любом другом файле вашего проекта, например, в стеке, и вызывать push
или pop
для этого объекта.Не забудьте #import NSMutableArray+Stack.h
в этих файлах.Вот пример кода, как вы можете использовать свой новый NSMutableArray
в качестве стека:
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);
Вывод журнала будет:
hello universe
hello world