Objective c 如何比较两个CFUUID(Mac OS X Carbon/CoreFoundation)?

Objective c 如何比较两个CFUUID(Mac OS X Carbon/CoreFoundation)?,objective-c,macos,macos-carbon,uuid,core-foundation,Objective C,Macos,Macos Carbon,Uuid,Core Foundation,如何比较Mac OS X中CoreFoundation Carbon框架中的两个CFUUIDRefs?除了将两个CFUUID转换为字符串然后比较它们之外,还有没有更简单的方法来检查它们是否相等?我不确定是否有一个规范的或推荐的方法本身,但是下面的方法就足够了吗 #define CompareUUIDs(u1, u2) memcmp(CFUUIDGetUUIDBytes(u1), CFUUIDGetUUIDBytes(u2)) 其用途如下: if (CompareUUIDs(u1, u2) ==

如何比较Mac OS X中CoreFoundation Carbon框架中的两个
CFUUIDRef
s?除了将两个CFUUID转换为字符串然后比较它们之外,还有没有更简单的方法来检查它们是否相等?

我不确定是否有一个规范的或推荐的方法本身,但是下面的方法就足够了吗

#define CompareUUIDs(u1, u2) memcmp(CFUUIDGetUUIDBytes(u1), CFUUIDGetUUIDBytes(u2))
其用途如下:

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

或者,由于您真正感兴趣的只是它们是否相等:

#define UUIDsAreEqual(u1, u2) (memcmp(CFUUIDGetUUIDBytes(u1), CFUUIDGetUUIDBytes(u2)) == 0)
其用途如下:

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

A是一种类型,因此您可以使用与任何其他CF对象相同的函数。

特别是,如果您查看,您将看到它为其equals函数指针指定NULL,这意味着(请参阅)CFEqual将使用指针标识比较+类型标识比较的默认实现来比较UUID,这是正确的,因为它们是唯一的。(注意,uuu cfuuiddCreateWithBytesPrimitive调用uu cfuuiddUniqueuuid)哦,我是个白痴。我刚刚复制了
CFEqual
,尽管非常糟糕。请参考Peter Hosey的回答。:-)