0
在我的程序中,我使用DiskArbitration
來檢查數據庫中的某些值,如果發生某些情況,請在掛載之前執行一些操作。我使用DARegisterDiskPeekCallback
與此回調:從DiskArbitration CFUUID對象創建字符串
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的字符串?
什麼'(CFUUIDRef)diskProps [@ 「DAVolumeUUID」]'? – trojanfoe
哦,修好了!我不知道爲什麼我沒有嘗試。我認爲對Obj-C來說相對較新並不能幫助...謝謝。 – josh