cocoa osx guid uuid core-foundation

cocoa - uuid php



¿Hay algún método para generar un GUID estándar de 128 bits(UUID) en Mac? (7)

¿Hay una función incorporada equivalente a la de .NET

Guid.NewGuid();

en Cocoa?

Mi deseo es producir una cadena a lo largo de las líneas de 550e8400-e29b-41d4-a716-446655440000 que representa un identificador único.


Cierto código:

Para un UUID de cadena, el siguiente método de clase debería ser el truco:

+(NSString*)UUIDString { CFUUIDRef theUUID = CFUUIDCreate(NULL); CFStringRef string = CFUUIDCreateString(NULL, theUUID); CFRelease(theUUID); return [(NSString *)string autorelease]; }

si realmente quieres los bytes (no la cadena):

+(CFUUIDBytes)UUIDBytes { CFUUIDRef theUUID = CFUUIDCreate(NULL); CFUUIDBytes bytes = CFUUIDGetUUIDBytes(theUUID); CFRelease(theUUID); return bytes; }

donde CFUUIDBytes es una estructura de los bytes UUID.


Los UUID se manejan en Core Foundation, por la biblioteca CFUUID. La función que está buscando es CFUUIDCreate .

FYI para búsquedas adicionales: estos son más comúnmente conocidos como UUID, el término GUID no se usa muy a menudo fuera del mundo de Microsoft. Es posible que tenga más suerte con ese término de búsqueda.



Al menos en MacOSX 10.5.x puede usar la herramienta de línea de comandos "uuidgen" para obtener su cadena, por ejemplo

$ uuidgen

054209C4-3873-4679-8104-3C18AE780512

también hay una opción -hdr con este comando que lo genera convenientemente en el estilo de encabezado

Ver man-page para más información.


Desde 10.3 o menos, puede usar [[NSProcessInfo processInfo] globallyUniqueString] . Sin embargo, aunque esto actualmente genera un UUID, nunca ha sido ni está garantizado que lo haga, por lo que si realmente necesita un UUID y no solo una cadena única, debe usar CFUUID.


o está la herramienta de línea de comandos uuidgen .


Desde 10.8 también podría usar: NSString * uuidString = [[NSUUID UUID] UUIDString];