Object-C同样没有提供Queue容器,因此我也自己实践了一个
#import <Foundation/Foundation.h> @interface NSQueue : NSObject { NSMutableArray* m_array; } - (void)enqueue:(id)anObject; - (id)dequeue; - (void)clear; @property (nonatomic, readonly) int count; @end
#import "NSQueue.h" @implementation NSQueue @synthesize count; - (id)init { if( self=[super init] ) { m_array = [[NSMutableArray alloc] init]; count = 0; } return self; } - (void)dealloc { [m_array release]; [self dealloc]; [super dealloc]; } - (void)enqueue:(id)anObject { [m_array addObject:anObject]; count = m_array.count; } - (id)dequeue { id obj = nil; if(m_array.count > 0) { obj = [[[m_array objectAtIndex:0]retain]autorelease]; [m_array removeObjectAtIndex:0]; count = m_array.count; } return obj; } - (void)clear { [m_array removeAllObjects]; count = 0; } @end