私のプログラムではDiskArbitration
、データベースに対していくつかの値をチェックし、特定の条件が発生した場合は、マウントする前に何かを実行しています。私はDARegisterDiskPeekCallback
このコールバックで使用しています:
DARegisterDiskPeekCallback(diskSession, kDADiskDescriptionMatchVolumeMountable, 0, determineIfNewDisk, NULL);
void determineIfNewDisk(DADiskRef disk, void* context)
{
NSDictionary *diskProps = (__bridge NSDictionary *)DADiskCopyDescription(disk);
CFUUIDCreateString(nil, *(CFUUIDRef *)diskProps[@"DAVolumeUUID"]);
}
UUID を使用して文字列を取得してデータベースにチェックインできるようにしたいのですが、diskProps[@"DAVolumeUUID"]
はポインターではなく汎用ポインターを返すため、CFUUIDRef
実行できませんCFUUIDCreateString()
。上記のポインターをポインターにキャストしようとしましたが、次のCFUUIDRef
エラーが発生します: Cast of an Objective-C pointer to 'CFUUIDRef *' ... is disallowed by ARC
. キャストしようとしないとCFUUIDCreateString
、ポインターを受け入れません。
a)ポインターをポインターにキャストする方法CFUUIDRef
、または b) UUID の文字列を取得する方法はありますか?