是否有与.NET相当的内置函数
Guid.NewGuid();
在可可?
我的愿望是产生一个字符串,550e8400-e29b-41d4-a716-446655440000
其中的字符串代表一个唯一的标识符.
UUID由Core Foundation,CFUUID库处理.您正在寻找的功能是CFUUIDCreate.
进一步搜索的FYI:这些通常称为UUID,术语GUID在Microsoft世界之外并不经常使用.您可能会对该搜索字词有更多好运.
一些代码:
对于字符串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字节的结构.
至少在MacOSX 10.5.x上,您可以使用命令行工具"uuidgen"来获取字符串,例如
$ uuidgen
054209C4-3873-4679-8104-3C18AE780512
这个命令还有一个选项-hdr,可以方便地以标题样式生成它
有关更多信息,请参见man-page.
或者是uuidgen
命令行工具.
从10.8开始你也可以使用:NSString*uuidString = [[NSUUID UUID] UUIDString];