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. 使用函数方式生成UUID

    1.默认生成的UUID是有 “-” 分隔符的 例如: public static void main(String[] args){ String uuid = UUID.randomUUID().t ...

  2. centos6.x一键15项系统优化(转自努力哥)

    #!/bin/sh ################################################ #Author:nulige # qqinfo: # Date: -- #vers ...

  3. 最新版 VS2015|Visual Studio Enterprise 2015简体中文版(企业版)

    Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品. Visual Studio 2015 是一个丰富的集成开发环境,可用于创建出色的 Windows.And ...

  4. MSSQL 让排序更方便灵活

    SQL: SELECT * FROM table1 ORDER BY CASE WHEN field=value THEN 1 ELSE 0 END (ASC/DESC) 是不是很方便呢,哈哈

  5. git从远程仓库中更新代码到本地仓库

    git从远程仓库中更新代码到本地仓库 有时候在使用git pull的时候,会莫名才报错.查了很多资料,尝试过git的很多命令.包括git fetch命令,都会报同样的错.最后终于发现了一条捷径,由网友 ...

  6. Codeforces 832 B. Petya and Exam-字符串匹配

    补的若干年以前的题目,水题,太菜啦_(:з」∠)_    B. Petya and Exam   time limit per test 2 seconds memory limit per test ...

  7. Codeforces Round #289 (Div. 2, ACM ICPC Rules) A. Maximum in Table【递推】

    A. Maximum in Table time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  8. spark-reduceByKey算子

  9. Linux漏洞建议工具Linux Exploit Suggester

     Linux漏洞建议工具Linux Exploit Suggester 在Linux系统渗透测试中,通常使用Nessus.OpenVAS对目标主机进行扫描,获取目标主机可能存在的漏洞.如果无法进行漏洞 ...

  10. python查询mangodb

    from bson.objectid import ObjectId import pymongo   #查询代码 #连接本机mongodb conn=pymongo.Connection() #指定 ...