Geo*_*old 9 iphone queue data-structures
在我使用自己的队列之前NSMutableArray,我想知道是否有更多可用的标准.我没有在Apple文档中看到任何内容,但如果没有人们使用的某个地方没有Queue实现,我会感到惊讶.Java破坏了我!
Mat*_*ges 10
基于NSMutableArray它实现队列非常简单,可能不到50行代码.
编辑:
通过快速谷歌搜索找到这个:
@interface Queue:NSObject {
NSMutableArray* objects;
}
- (void)addObject:(id)object;
- (id)takeObject;
@end
@implementation Queue
- (id)init {
if ((self = [super init])) {
objects = [[NSMutableArray alloc] init];
}
return self;
}
- (void)dealloc {
[objects release];
[super dealloc];
}
- (void)addObject:(id)object {
[objects addObject:object];
}
- (id)takeObject {
id object = nil;
if ([objects count] > 0) {
object = [[[objects objectAtIndex:0] retain] autorelease];
[objects removeObjectAtIndex:0];
}
return object;
}
@end
Run Code Online (Sandbox Code Playgroud)
Cocoa本身没有Queue类,并且本身没有标准,但有几个选项,其中一个可能最适合您的需求.看到这个问题(和我的回答).
就像你说的,你可以使用NSMutableArray自己动手.如果你只需要一个quick'n'dirty队列(并且不担心复制,编码/解码,枚举等),那么@Matt建议的解决方案是一种简单的方法.您还应该考虑通过类别添加队列方法NSMutableArray,这很好,因为您的"队列"也是一个数组(因此您可以为NSArray参数传递它),并且您可以免费获得所有NS(Mutable)数组功能.
如果性能很重要,我建议使用更适合删除第一个元素的结构.出于这个原因,我为自己的框架编写了CHCircularBufferQueue.(不是试图嘟嘟我自己的号角,只是试图挽救他人一段时间.)