在多个设备之间生成随机数

时间:2014-02-18 13:08:50

标签: ios random

我正在撰写一个涉及上传图片的应用。我使用Amazon S3来存储这些文件。一个问题是我需要为每个文件指定一个唯一的文件名。

在每台iOS设备上,我使用 arc4random_unique 功能生成随机数。

我的问题是,这种方法会导致跨多个设备重复吗?

因为据我所知,如果我使用rand()将时间作为种子,如果两个用户同时尝试上传图像,rand()函数将产生完全相同的结果。

2 个答案:

答案 0 :(得分:1)

NSString *GUID = [[NSString alloc]init];
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
GUID = (__bridge NSString *)string;
CFRelease(string);
return [GUID lowercaseString];

答案 1 :(得分:1)

如果您想拥有文件的唯一名称,那么可以使用UUID。

如果您使用的是iOS6及更高版本,则可以使用内置方法生成UUID:

NSString *uuidString = [[NSUUID UUID] UUIDString];
// Generates: 7E60066C-C7F3-438A-95B1-DDE8634E1072 for example

无需退到基金会,或担心过桥和ARC。