是否有与 .NET 等效的内置函数
Guid.NewGuid();
在可可?
我的愿望是产生一个字符串,550e8400-e29b-41d4-a716-446655440000
它代表一个唯一标识符。
是否有与 .NET 等效的内置函数
Guid.NewGuid();
在可可?
我的愿望是产生一个字符串,550e8400-e29b-41d4-a716-446655440000
它代表一个唯一标识符。
UUID 在 Core Foundation 中由 CFUUID 库处理。您正在寻找的功能是CFUUIDCreate。
仅供进一步搜索:这些通常称为 UUID,术语 GUID 在 Microsoft 世界之外并不经常使用。您可能会更幸运地使用该搜索词。
至少在 MacOSX 10.5.x 上,您可以使用命令行工具“uuidgen”来获取您的字符串,例如
$ uuidgen
054209C4-3873-4679-8104-3C18AE780512
还有一个带有此命令的选项 -hdr 可以方便地以标题样式生成它
有关更多信息,请参见手册页。
一些代码:
对于字符串 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 字节的结构。
或者有uuidgen
命令行工具。
从 10.8 开始,您还可以使用:
NSString *uuidString = [[NSUUID UUID] UUIDString];
查看Wikipedia文章和Core Foundation页面。
您可以在终端中创建别名~/.bash_profile
并调用uuid
:
alias uuid="uuidgen | tr '[:upper:]' '[:lower:]'"
从 10.3 左右开始,您可以使用[[NSProcessInfo processInfo] globallyUniqueString]
. 然而,虽然这目前会生成一个 UUID,但它从来没有并且仍然不能保证这样做,所以如果你真的需要一个UUID而不仅仅是任何唯一的字符串,你应该使用 CFUUID。