Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
UUID обрабатываются в Базовой Основе библиотекой CFUUID. Функция, которую Вы ищете, CFUUIDCreate.
к вашему сведению для дальнейших поисков: они обычно известны как UUID, термин GUID не используется очень часто за пределами мира Microsoft. У Вас могло бы быть больше удачи с тем критерием поиска.
Некоторый код:
Для строкового 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.
или существует uuidgen
инструмент командной строки.
Проверьте статья Wikipedia и страница Core Foundation .
С тех пор приблизительно 10.3, можно использовать [[NSProcessInfo processInfo] globallyUniqueString]
. Однако, в то время как это в настоящее время генерирует UUID, это никогда не было и все еще, как гарантируют, не сделает это, поэтому если Вам действительно нужно UUID и не только какая-либо уникальная строка, необходимо использовать CFUUID.
По крайней мере в MacOSX 10.5.x вы можете использовать инструмент командной строки "uuidgen", чтобы получить строку например,
$ uuidgen
054209C4-3873-4679-8104-3C18AE780512
также есть опция -hdr с этой командой, которая удобно генерирует ее в стиле заголовка
См. man-страницу для получения дополнительной информации.