Me parece bien. Esto es lo que yo uso (disponible como gist)
- (NSString *)uuidString {
// Returns a UUID
CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault);
NSString *uuidString = (__bridge_transfer NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuid);
CFRelease(uuid);
return uuidString;
}
Editado para agregar
Si está en OS X 10.8 o iOS 6 se puede utilizar la nueva clase NSUUID para generar un UUID cadena, sin tener que ir a la Fundación núcleo:
NSString *uuidString = [[NSUUID UUID] UUIDString];
// Generates: 7E60066C-C7F3-438A-95B1-DDE8634E1072
Pero sobre todo, si lo que desea es generar una cadena única para un nombre de archivo o directorio, puede utilizar NSProcessInfo
's globallyUniqueString
método como:
NSString *uuidString = [[NSProcessInfo processInfo] globallyUniqueString];
// generates 56341C6E-35A7-4C97-9C5E-7AC79673EAB2-539-000001F95B327819
No es un UUID formal, pero es único para su red y su proceso y es una buena opción para una gran cantidad de casos.
+1 para esa indicación [NSProcessInfo globallyUniqueString]. –