Существует ли метод для генерации стандартного GUID на 128 битов (UUID) на Mac?

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

22
задан pkamb 9 May 2017 в 18:33
поделиться

6 ответов

UUID обрабатываются в Базовой Основе библиотекой CFUUID. Функция, которую Вы ищете, CFUUIDCreate.

к вашему сведению для дальнейших поисков: они обычно известны как UUID, термин GUID не используется очень часто за пределами мира Microsoft. У Вас могло бы быть больше удачи с тем критерием поиска.

42
ответ дан Jörg W Mittag 29 November 2019 в 03:18
поделиться

Некоторый код:

Для строкового UUID, следующий метод класса должен добиться цели:

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

, если Вы действительно хотите байты (не строка):

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

, где CFUUIDBytes структура из байтов UUID.

32
ответ дан Barry Wark 29 November 2019 в 03:18
поделиться

или существует uuidgen инструмент командной строки.

13
ответ дан ma11hew28 29 November 2019 в 03:18
поделиться
4
ответ дан waynecolvin 29 November 2019 в 03:18
поделиться

С тех пор приблизительно 10.3, можно использовать [[NSProcessInfo processInfo] globallyUniqueString] . Однако, в то время как это в настоящее время генерирует UUID, это никогда не было и все еще, как гарантируют, не сделает это, поэтому если Вам действительно нужно UUID и не только какая-либо уникальная строка, необходимо использовать CFUUID.

2
ответ дан Peter Hosey 29 November 2019 в 03:18
поделиться

По крайней мере в MacOSX 10.5.x вы можете использовать инструмент командной строки "uuidgen", чтобы получить строку например,

$ uuidgen

054209C4-3873-4679-8104-3C18AE780512

также есть опция -hdr с этой командой, которая удобно генерирует ее в стиле заголовка

См. man-страницу для получения дополнительной информации.

28
ответ дан 29 November 2019 в 03:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: