Как сравнить два CFUUID (Mac OS X Carbon / CoreFoundation)? - PullRequest
3 голосов
/ 31 января 2011

Как я могу сравнить два CFUUIDRef с из инфраструктуры CoreFoundation Carbon в Mac OS X? Есть ли более простой способ проверить, равны ли два CFUUID, кроме преобразования их в строки и их сравнения?

Ответы [ 2 ]

9 голосов
/ 31 января 2011

A CFUUID является разновидностью CFType , поэтому вы можете использовать ту же функцию CFEqual , которую вы используете для любых других объектов CF.

1 голос
/ 31 января 2011

Я не уверен, существует ли канонический или рекомендуемый метод как таковой, но хватит ли следующего?

#define CompareUUIDs(u1, u2) memcmp(CFUUIDGetUUIDBytes(u1), CFUUIDGetUUIDBytes(u2))

Это будет использоваться следующим образом:

if (CompareUUIDs(u1, u2) == 0) {
    // UUIDs are equal
} // etc..

В качестве альтернативы, поскольку вас действительно интересует, равны они или нет:

#define UUIDsAreEqual(u1, u2) (memcmp(CFUUIDGetUUIDBytes(u1), CFUUIDGetUUIDBytes(u2)) == 0)

Это будет использоваться следующим образом:

if (UUIDsAreEqual(u1, u2)) {
    // UUIDs are equal
} // etc..
...