当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

Persistent Data Structures for Objective-C

持久化 Objective-C 的结构体
授权协议 MIT
开发语言 Objective-C
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 不详
投 递 者 郤仰岳
操作系统 OS X
开源组织
适用人群 未知
 软件概览

该项目是用于持久化 Objective-C 的结构体的工具,支持 Vector, Set 和 HashMap 数据结构。

下面代码演示如何序列化 Vector 结构:

#import "AAPersistentVector.h"
#import "AATransientVector.h"
#import "AAIIterator.h"

/// Initialization

AAPersistentVector *vector1 = [[AAPersistentVector alloc] init];

// But if you need a persistent empty vector, better use the pre-created empty one.
AAPersistentVector *vector2 = [AAPersistentVector empty];

// Or you can load an array into it during initialization:
AAPersistentVector *vector = [[AAPersistentVector alloc] initWithArray:@[@1, @2, @3]];

/// CRUD operations
[vector objectAtIndex:1]; // => @2
vector = [vector addObject:@4]; // => vector with @1, @2, @3, @4
vector = [vector replaceObjectAtIndex:2 withObject:@5]; // => vector with @1, @2, @5, @4
vector = [vector removeLastObject]; // => vector with @1, @2, @5

/// Convert to NSArray
[vector toArray]; // => @[@1, @2, @5]

/// Iterating

// With Fast Enumeration
for (id value in vector) {
    // going to iterate through values with `value` = @1, @2 and @5
}

// With Iterator
id<AAIIterator> iterator = [vector iterator];
while (iterator) {
    [iterator first]; // => @1, @2 and @5
    iterator = [iterator next];
}

// With each (fastest way)
[vector each:^(id value) {
    // going to iterate through values with `value` = @1, @2 and @5
}];

/// Transients

// Efficiently add 100 objects to the vector. Will be ~10 times faster than
// adding without transient
[vector withTransient:^(AATransientVector *transient) {
    for (NSUInteger i = 0; i < 100; i += 1) {
        transient = [transient addObject:@(i)];
    }
    return transient;
}];

// You can also do that without a block, if you want
AATransientVector *transientVector = [vector asTransient];
for (NSUInteger i = 0; i < 100; i += 1) {
    transientVector = [transientVector addObject:@(i)];
}
vector = [transientVector asPersistent];
  • 数据的语义(The Semantics of Data)         C++有意思的一点是,标准从来不要求具体的C++实现,不同的编译器版本可以有不同的底层实现。这一点从虚继承这一点就可以看出来,比如下面的这些类: class X{}; class Y : virtual public X {}; class Z : virtual public X {}; class A : public

  • Objective-C Primer(3)Multiple arguments for one method, synthesize and dynamic Author: 柳大·Poechant(钟超) Email: zhongchao.ustc#gmail.com (# -> @) Blog:Blog.CSDN.net/Poechant Date: May 7th, 2012 1 How to

  • 在java中想让类   “具有新的功能”  通常采用继承来实现 ,oc中可以使用类别(category)为已有的类添加新的方法,注意是为任何已有类(包括系统提供的NSObject  , NSString 等等),类别不是继承,更像是直接修改了源码 例如: #import <Foundation/Foundation.h> // 为NSString新增方法,()中任意合法标示符即可 @

  • Assignment 1: Abstract Data Types with C Report Submission Deadline: 17:00 on Sunday 23th October 2020 (Week 8) Description: This assignment contributes 3% of the overall course mark. Through the lect

  • 中文翻译为:数据结构——C++版(第四版)Michael Main,  Walter Savitch 著 Chapter 1   The Phases of Software Development(软件开发的几个阶段) Preface One     This chapter illustrates(阐明) the phases of software development.     Thes

  • --------------------------------------------------------------------------------                         BASIC DATA STRUCTURES IN C++                                                   -Sanchit Karve  

  • 趁有空,整理一下学习笔记,同时也加深印象。 什么是 Object Literals?它是一个让你写法变得更简洁的新特性,是一个非常赞的东西,下面举一些例子: 1、NSArray 习惯了PHP多年,真心觉得PHP简洁多了~不像Objective-C这么烦锁: NSArray *array = [NSArray arrayWithObjects: @"one string", @"tow string

  • 1. Summarize the difference between contiguous List and Linked List The list is stored in memory in order. Elements are stored in memory as contiguous memory locations and are more suitable for random

  • 就做了4题,其他的感觉好难!!QAQ 卿学姐与公主 某日,百无聊赖的卿学姐打开了某11区的某魔幻游戏 在这个魔幻的游戏里,生活着一个美丽的公主,但现在公主被关押在了魔王的城堡中。 英勇的卿学姐拔出利刃冲向了拯救公主的道路。 走过了荒野,翻越了高山,跨过了大洋,卿学姐来到了魔王的第一道城关。 在这个城关面前的是魔王的精锐部队,这些士兵成一字排开。 卿学姐的武器每次只能攻击一个士兵,并造成一定伤害,卿

  • Source Annotations 主要支持几种检查 Specific Topics Annotations to Enhance Generic Checks Null Pointer Checking Attribute 'nonnull' Mac OS X API Annotations Cocoa & Core Foundation Memory Management Annotatio

  • Data Structures and Program Design in C++ 转载于:https://www.cnblogs.com/gavinhughhu/archive/2010/03/10/1682155.html

 相关资料
  • 主要内容:1. 定义结构体,2. 访问结构成员,3. 结构体作为函数参数,4. 指向结构的指针,5. 位域Objective-C数组可定义包含多个相同类型的数据项的变量类型,但结构体是Objective-C编程中的另一个用户定义数据类型,它可组合不同类型的数据项。 结构体用于表示记录,假设要图书馆中跟踪书籍信息。可能希望跟踪每本书的以下属性 - 标题 作者 学科 书名 1. 定义结构体 要定义结构体,必须使用语句。 语句定义一个新的数据类型,为程序提供多个成员。 语句的格式如下所示 - 是可选的

  • 主要内容:1. Objective-C Hello World示例在学习Objective-C编程语言的基本构建块之前,先来看一下最基本的Objective-C程序结构,以便在接下来的章节中,将它作为参考理解程序。 1. Objective-C Hello World示例 Objective-C程序基本上由以下部分组成 - 预处理程序命令 接口 实现 方法 变量 声明和表达 注释 下面来看一下打印“Hello World”字样的简单代码 - 下面对上述程序的各个

  • Objective-C,通常写作 ObjC 和较少用的 Objective C 或 Obj-C,是扩充 C 的面向对象编程语言。它主要使用于 Mac OS X 和 GNUstep 这两个使用 OpenStep 标准的系统,而在 NeXTSTEP 和 OpenStep 中它更是基本语言。Objective-C 可以在 gcc 运作的系统写和编译,因为 gcc 含 Objective-C 的编译器。

  • 问题内容: 简单地说,我有一个存储应用程序常量的结构,如下所示: 例如,可以通过调用在Swift代码中使用这些常量。但是在我的代码中,它还包含一些Objective- C类。所以我的问题是如何在Objective-C代码中使用这些常量? 如果这种声明常量的方法不好,那么在Swift和Objective-C代码中使用全局常量的最佳方法是什么? 问题答案: 可悲的是,你不能暴露,也不是Objectiv

  • 主要内容:1、定义结构体,2、结构体的特征,3、类与结构体在 C# 中,结构体也被称为结构类型(“structure type”或“struct type”),它是一种可封装数据和相关功能的值类型,在语法上结构体与类(class)非常相似,它们都可以用来封装数据,并且都可以包含成员属性和成员方法。 1、定义结构体 要定义一个结构体需要使用 struct 关键字,每个结构体都可以被看作是一种新的数据类型,其中可以包含多个成员(成员属性和成员方法),例如下面

  • Objective-C Runtime Runtime 是什么? Runtime 是 Objective-C 区别于 C 语言这样的静态语言的一个非常重要的特性。对于 C 语言,函数的调用会在编译期就已经决定好,在编译完成后直接顺序执行。但是 OC 是一门动态语言,函数调用变成了消息发送,在编译期不能知道要调用哪个函数。所以 Runtime 无非就是去解决如何在运行时期找到调用方法这样的问题。 对

  • Posing,顾名思义,意思是“冒充”,它跟类似,但本质上不一样,Posing存在的目的在于子类可以冒充父类,使得后续的代码无需把父类修改为子类,就可以很方便的让父类表现成子类的行为,从而实现非常方便的冒充,这在一般的语言中是难以想象的。 在开始在Objective-C中进行构建之前,提醒读者注意,在Mac OS X 10.5中声明已经弃用了冒充(Posing),并且之后无法使用它。 因此对于那些

  • Objective-C类定义了一个将数据与相关行为相结合的对象。 有时,仅表示单个任务或行为单元而不是方法集合是有意义的。 块是C,Objective-C和C++等编程语言中的高级功能,它允许创建不同的代码段,这些代码段可以传递给方法或函数,就像它们是值一样。 块是Objective-C对象,因此它们可以添加到或等集合中。 它们还能够从封闭范围中捕获值,使其类似于其他编程语言中的闭包或。 简单块声