在我的程序中,我使用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将不接受指针。
是否有一种方法可以将指针转换为CFUUIDRef指针,或者b)获取UUID的字符串?
发布于 2014-06-17 12:29:27
请使用以下代码:
CFUUIDCreateString(nil, (CFUUIDRef)diskProps[@"DAVolumeUUID"]);https://stackoverflow.com/questions/24263593
复制相似问题