Objective-C 队列实现
原贴地址:http://blog.csdn.net/cloudhsu/article/details/6589313
Objective-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
另一版本:
#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];
}
return self;
}
- (void)dealloc {
[m_array release];
[super dealloc];
}
- (void)enqueue:(id)anObject
{
[m_array addObject:anObject];
}
- (id)dequeue
{
id obj = nil;
if(m_array.count > 0)
{
obj = [[[m_array objectAtIndex:0]retain]autorelease];
[m_array removeObjectAtIndex:0];
}
return obj;
}
- (void)clear
{
[m_array removeAllObjects];
}
- (int) count{
return [m_array count];
}
@end
分享到:
相关推荐
二叉树 二叉树_基于Objective-C的完全二叉树实现的优先队列
CHDataStructures是标准的Objective-C库,也称为“集合”,它采用Objective-C协议,该协议定义了API的功能以及与任何实现交互的API,无论其内部如何。 Apple广泛而灵活的框架包括一些高度抽象的集合类,这些集合类...
SwiftAndObjC算法在Swift && Objective-C中实现的流行算法的实现排序气泡排序插入排序选择排序合并排序数据结构堆队列
我将不再为这个项目贡献代码。 尽管这种技术对于与 UIWebView 通信仍然有效,但在 iOS 8.0 中,Apple 已经提供了 WKWebKit。 如果您要与浏览器通信并且... 这个库的 Objective-C 部分包括四个文件:一个接口、一个实现
与Java实现不同: 使用GCD,并且主要在主队列(线程)上使用,而不是直接使用线程。 数据包分派使用非主队列。 我正在等待看看何时/何处性能会引入非主/并发队列。 像素结构是浮点数R,G,B而不是字节 不支持5轴...
它能比较容易地设计一个命令队列; 在需要的情况下,可以较容易地将命令记入日志; 允许接收请求地一方决定是否要否决请求; 可以容易地实现对请求地撤销和重做; 由于加进新地具体命令类不影响其他的类,因此...
Objective-C 的情况下用纯 C 语言创建一个简单的 OS X 应用程序 - 命令行 JSON 处理器 - 用 C 编写的通用终端菜单。 - 类似文本编辑器的 vim - 实时性能监控,做得对! - 通用数据结构库。 - 流式 SQL 数据库 - Unix...
在从的Objective-C实现并保持代码简约的同时,此库添加了以下内容: 转换为Swift 4 使用泛型来进行Objective-C不可能进行的大类型推断 全面重构新的和现代的代码 消除不必要的,误导性的进度概念,从而导致不良...
EDQueue提供了一个高级接口,用于使用和实现线程化作业队列。 您需要做的就是处理提供的委托方法中的工作,而EDQueue处理其余的工作。入门使用EDQueue的最简单方法是查看随附的示例应用程序。 Xcode项目文件可以在...
代码示例——Alex Korsos小行星+——Java 1980 年代的小行星游戏,带有一些... 功能包括: 播放/暂停按钮音量滑块进度显示和搜索器元数据显示用于文件选择的打开文件浏览器按钮拖放文件选择MixerOne——Objective-C
Array是一种类似于矢量的标准结构,允许O(1)摊销附加,快速迭代等ContiguousArray具有关于连续性的更严格规则,但并未桥接到Objective-C。 let array = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] let cArray: ...
MAC OC编程:利用 Object C 和 Foundation 框架,利用栈实现数值表达式的求值。(要求不使用 NSExpression)。
iOS面试题---Objective_C语言特性相关问题 3、2018 iOS面试题---runtime相关 4、2018 iOS面试题---算法相关 5、2019 iOS面试题-----内存管理、自动释放池与循环引用 6、2019 iOS面试题-----Block原理、Block变量截获...
该库提供用于创建消费者斯威夫特/ Objective C的DSL。 它提供了对依赖系统之间的支持,这些系统基于HTTP(或某些实现的消息队列)进行集成。 但为什么? 测试应用程序和服务之间的通信边界。 您可以查看条约如何在...
盒式磁带最初由实现。 盒式磁带受启发。 QueueFile是高效的基于文件的FIFO队列。 从实例添加和删除是O(1)操作。 写入是同步的; 数据将在操作返回之前被写入磁盘。 该队列旨在保持可靠性,并在系统或进程崩溃时...
一个完善的iOS UI敏捷开发框架,基于UIKit/Foundation,包含常用控件的链式API拓展、一个命令式的列表控制器、一个事件处理队列,使用“模块化”的设计思路,致力于大大减小UI开发和维护的难度和工作量。 更新 1.1 1...
YXQueue适用于iOS的OOP和轻松使用作业队列YXQueue被封装用于NSOperation。 线程的管理器和调用者按YXQueue划分。 使用它,开发人员将不会太在意线程管理,而只是关注如何创建作业和实现委托。建筑学...
策略模式:利用 C++ 栈、队列、优先队列实现三种调度策略,性能优越。 应用场景一:主线程任务量过大导致掉帧(利用组件为任务调度降频)。 应用场景二:短时间内执行的任务量过大,而某些任务失去了执行的意义...
由于UI在各项目中通用性较差,所以简单实现了UI基类 XYZAlertView(默认实现了调度协议),实现了一个类似系统的简单AlertXYZSystemAlertView ,UI类的使用可以脱离调度类 已支持的调度: 队列颗粒度ViewController ...
对于长时间运行的任务,建议将您的内容放在背景队列中,摆脱用户界面的块,并在触发后在主队列上进行更新。 [WZSnakeHUD show: @" Loading " ];dispatch_async (dispatch_get_global_queue( DISPATCH_QUEUE_...