在我的程序中,我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的字符串?