2011-01-31 9 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の応答を参照してください。 :-) –

関連する問題