2011-01-31 3 views

답변

9

은 종류가 CFType이므로 다른 CF 객체에 사용하는 것과 동일한 CFEqual 함수를 사용합니다.

+2

특히, 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를 호출합니다) –

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의 응답을 대신 참조하십시오. :-) –