выглядит хорошо для меня. Это то, что я использую (доступно как gist )
- (NSString *)uuidString {
// Returns a UUID
CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault);
NSString *uuidString = (__bridge_transfer NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuid);
CFRelease(uuid);
return uuidString;
}
Отредактировано, чтобы добавить
Если вы используете OS X 10.8 или iOS 6, вы можете использовать новый класс NSUUID для генерации строкового UUID, не обращаясь к Core Foundation:
NSString *uuidString = [[NSUUID UUID] UUIDString];
// Generates: 7E60066C-C7F3-438A-95B1-DDE8634E1072
Но в большинстве случаев, если вы просто хотите сгенерировать уникальную строку для имени файла или каталога, вы можете использовать метод NSProcessInfo
globallyUniqueString
, например:
NSString *uuidString = [[NSProcessInfo processInfo] globallyUniqueString];
// generates 56341C6E-35A7-4C97-9C5E-7AC79673EAB2-539-000001F95B327819
Это не формальный UUID, но он уникален для вашей сети и вашего процесса и является хорошим выбором для многих случаев.