我的问题是我想生成随机唯一标识符,这对于运行我的同一个应用程序的两个设备应该不相同。并且在同一设备中它不应该产生重复的标识符。所以我想要的是设备特定号码+唯一标识符(这样我可以轻松地识别具有服务器上的设备的特定用户)。目前我正在使用以下代码。但它非常冗长。我希望标识符仅限于8个字符。
+ (NSString *)uuid
{
CFUUIDRef uuidRef = CFUUIDCreate(NULL);
CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
CFRelease(uuidRef);
return (__bridge_transfer NSString *)uuidStringRef;
}
9FCAFBEC-04CA-4F78-B417-BB051EEC9888
答案 0 :(得分:4)
听起来你根本不需要UUID,你只需要一个随机数。幸运的是,由于您只需要8个字符(= 4个十六进制字节),您可以使用系统函数arc4random
轻松生成此字符:
NSString * str = [NSString stringWithFormat:@"%08X", arc4random());
UUID是具有特定长度的通用唯一ID的特殊格式(总是128位,或32个十六进制字符加连字符)。当然,你可以将UUID字符串截断为8个字符,但这是不可取的,因为它们具有内部格式(某些子字符串不会像其他字符串那样随机)并且你不会以无偏见结束随机性。
答案 1 :(得分:1)
我认为如果您正在查看特定于设备应用的ID,那么您应该查看供应商ID。
已经回答here。