Mac OS X의 CoreFoundation Carbon 프레임 워크에서 두 CFUUIDRef
을 어떻게 비교할 수 있습니까? 두 CFUUID가 스트링으로 변환 한 후 비교하는 것 이외에 다른 CFUUID가 동일한 지 확인하는 쉬운 방법이 있습니까?두 개의 CFUUID (Mac OS X Carbon/CoreFoundation)를 어떻게 비교합니까?
3
A
답변
9
1
정식 또는 권장 된 방법 자체가 있는지 확실하지 않지만 다음 내용으로 충분합니까?
#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..
+1
D' oh, 나는 바보입니다. 나는 'CFEqual'을 예외적으로 잘 만들지 않았습니다. Peter Hosey의 응답을 대신 참조하십시오. :-) –
특히, http://www.opensource.apple.com/source/CF/CF-550.19/CFUUID.c를 보면 equals 함수 포인터에 NULL을 지정한다는 것을 알 수 있습니다. (http://www.opensource.apple.com/source/CF/CF-550/CFRuntime.c 참조) CFEqual은 포인터 식별 비교 + 유형 ID 비교의 기본 구현을 사용하여 UUID를 비교합니다. 다시 유니크. (__CFUUIDCreateWithBytesPrimitive는 __CFUUIDAddUniqueUUID를 호출합니다) –