UUID(GUID)是Cocoa Touch提供的一种生成唯一标识的机制。类型为CFUUIDRef的对象可以代表UUID,UUID是基于当前时间、计数器和硬件标识(通常是以太网卡的MAC地址)等数据计算生成的。

  UUID不是Objective-C对象,而是由Core Foundation API提供的C结构。Core Foundation是一套C语言API,包含编写应用所学的基本构建,例如字符串、数组对象和字典对象。Core Foundation“类”以CF为前缀,以Ref为后缀,例如CFArrayRef和CFStringRef。

  虽然很多Core Foundation对象都有Objective-C版本(例如NSString是CFStringRef的Objective-C版本),但是CFUUIDRef没有,并且和Objective-C没有任何关联。所以Core Foundation生成的UUID字符串只能是CFUUIDRef,而不会是NSString。

  //创建CFUUID对象,该对象知道如何创建无重复的字符串
CFUUIDRef newUniqueID = CFUUIDCreate(kCFAllocatorDefault); //通过CFUUID对象创建无重复的字符串
CFStringRef newUniqueIDString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueID);
//将创建的无重复字符串赋给Possession对象的imageKey对象
[possession setImageKey:(NSString *) newUniqueIDString]; //之前为创建对象调用的函数,函数名包含"Create",所以需要release新创建的对象
CFRelease(newUniqueIDString);
CFRelease(newUniqueID);

这段代码调用了C函数CFUUIDCreate和CFUUIDCreateString,当C函数的函数名包含英文单词create时,调用方需要负责释放返回的对象。这个向类发送alloc消息:发送alloc消息的那方要负责释放返回对象。通过CFRelease函数并传入Core Foundation对象,可以释放相应地对象。

UUID(即GUID)的更多相关文章

  1. php中生成标准uuid(guid)的方法

    );// "}"        return $uuid;    }}echo guid();?>

  2. UUID、GUID、SID、SUSID

    1. UUID: (Universally Unique Identifier) 通用唯一标识符, 是一个标识符标准用于软件架构,由开放软件基金会(OSF)作为分布式计算环境(DCE)的一部分而制作的 ...

  3. UUID 和 GUID 的区别(转)

    UUID是一个由4个连字号(-)将32个字节长的字符串分隔后生成的字符串,总共36个字节长.比如:550e8400-e29b-41d4-a716-446655440000 http://gohands ...

  4. javascript guid(uuid)

    http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript function generateU ...

  5. mysql 生成UUID() 即 ORACLE 中的guid()函数

    MYSQL 生成UUID 即 guid 函数-- 带 - 的UUIDselect UUID() -- 去掉 - 的UUIDselect replace(uuid(),'-','') 一个表的数据插入另 ...

  6. go guid 和uuid生成

    1 安装 开始-运行 输入 cmd 回车 输入 go get -u github.com/typa01/go-utils 安装完毕后 2 使用 a 首先引入包 import (      goutil ...

  7. UUID库

    If you cannot afford to use Boost, then there is a very minimal library that I implemented which sim ...

  8. java UUID

    UUID是Universally Unique Identifier的缩写,它是在一定的范围内(从特定的名字空间到全球)唯一的机器生成的标识符.UUID具有以下涵义: 经由一定的算法机器生成 为了保证 ...

  9. PHP 继承,组合,单模式,GUID,等混合实例

    <?php header("Content-type: text/html; charset=utf-8"); header('Access-Control-Allow-Or ...

随机推荐

  1. shell 练习 (免密钥登陆脚本)

    脚本说明 本地服务器ip 10.0.0.5 远程服务器地址 10.0.0.223 #!/bin/bashremote_ip=$ if [ ! -n "$1" ] ;then ech ...

  2. 常用Mysql查询语句

    1.查询数据表中重复记录 select user_name,count(*) as count from user_table group by user_name having count>1 ...

  3. C/C++/C#程序如何打成DLL动态库

    C/C++程序如何打成DLL动态库:1.在VS中新建main.h,添加如下内容:extern "C" _declspec(dllexport) int onLoad(); 2.新建 ...

  4. JAVA泛型练手

    公司电脑不能安装JAVA环境,不爽啊. import java.util.List; import java.util.ArrayList; import java.lang.reflect.Meth ...

  5. css伪类元素:after 的多功能用法——任意大小的底边框

    需求用法出现的背景: 由于项目UI的优化,项目中所有tab导航选中的状态都是统一样式书写的,之前都是用的border-bottom,新的需求如果用以前的本办法就是定位一个选中边框在底部,但是涉及的模板 ...

  6. 51nod 1182 完美字符串【字符串排序+哈希】

    1182 完美字符串 题目来源: Facebook Hacker Cup选拔 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 约翰认为字符串的完美度等 ...

  7. [Bzoj5285][洛谷P4424][HNOI/AHOI2018]寻宝游戏(bitset)

    P4424 [HNOI/AHOI2018]寻宝游戏 某大学每年都会有一次Mystery Hunt的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为新生 ...

  8. InputSplit—>RecordReder—>map(key,value,context)的过程解析

    上图首先描述了在TaskTracker端Task(MapTask.ReduceTask)的执行过程,MapTask(org.apache.hadoop.mapred)首先被TaskRunner调用,然 ...

  9. 2,搭建一个java开发环境

    (1)java开发需要的条件? 1)适用于环境开发的jdk(里面包括了jre和加热里面包括了jvm) 2)对应开发环境的eclipse 3)如果涉及到web开发,还需要web服务器(Tomcat) ( ...

  10. stack栈和Queue队列

    1.push将对象插入 System.Collections.Generic.Stack<T> 的顶部. Stack st = new Stack(); //栈是先进后出 st.Push( ...