有一个内置的功能等同于.NET的有没有一种方法可以在Mac上生成标准的128位GUID(UUID)?
Guid.NewGuid();
可可?
我的愿望是,以产生沿550e8400-e29b-41d4-a716-446655440000
表示的唯一标识符的线的字符串。
有一个内置的功能等同于.NET的有没有一种方法可以在Mac上生成标准的128位GUID(UUID)?
Guid.NewGuid();
可可?
我的愿望是,以产生沿550e8400-e29b-41d4-a716-446655440000
表示的唯一标识符的线的字符串。
的UUID在核心基础处理,由CFUUID库。您正在寻找的功能是CFUUIDCreate。
FYI进一步搜索:这是最俗称的UUID,GUID是不是经常使用微软的世界之外的术语。该搜索词可能会带来更多运气。
退房的Wikipedia文章和Core Foundation页面。
自10.3左右,你可以使用[[NSProcessInfo processInfo] globallyUniqueString]
。然而,尽管这目前生成一个UUID,它永远不会一直并且仍然不能保证做到这一点,所以如果你真的需要一个UUID,不是任何唯一的字符串,你应该使用CFUUID。
一些代码:
对于字符串UUID,下面的类方法应该做的伎俩:
+(NSString*)UUIDString {
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return [(NSString *)string autorelease];
}
,如果你真的想要的字节(而不是字符串):
+(CFUUIDBytes)UUIDBytes {
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFUUIDBytes bytes = CFUUIDGetUUIDBytes(theUUID);
CFRelease(theUUID);
return bytes;
}
其中CFUUIDBytes是UUID字节的struct。
@Jay:从技术上讲,就是Core Foundation API,它是用C语言编写的.Cocoa是用Objective C编写的,并且更加简洁(大部分时间)。 – geon 2013-03-01 15:07:57
至少MacOSX上10.5您可以使用命令行工具“的uuidgen”让您的字符串 例如
$的uuidgen
054209C4-3873-4679-8104-3C18AE780512
有也是一种选择-hdr这个COMAND它可以方便地生成它的标题样式
参见手册页进一步的相关信息。
自10.8您也可以使用:的NSString * uuidString = [[NSUUID UUID] UUIDString]。
而不是问“有没有相同功能为foo()”你应该解释一下你问的功能一样。 Mac OS X没有“Guid”对象,它具有CFUUIDRef。长期的Mac开发人员可能不会从地面上的洞中知道“Guid”。 – 2008-11-16 10:07:44