![](/img/trans.png)
[英]I can't downcast an NSDictionary, CFDictionaryRef, nor an NSMutableDictionary, to SecItemAdd()
[英]What is the difference between NSMutableDictionary and CFDictionaryRef?
我正在嘗試從使用AVCaptureDevice捕獲的圖像中獲取EXIF附件,如下所示:
CFDictionaryRef exifAttachments = (CFDictionaryRef)CMGetAttachment(buf, kCGImagePropertyExifDictionary, NULL);
NSMutableDictionary *exifAttachment = (__bridge NSMutableDictionary*)CMGetAttachment(buf, kCGImagePropertyExifDictionary, NULL);
兩者似乎都返回相同的結果,盡管NSMutableDictionary需要使用__bridge
來__bridge
轉換類型。 它們之間有什么區別? 我什么時候應該使用哪個?
首先, CFDictionaryRef
是不可變的,而NSMutableDictionary
是可變的(可以修改)。
您不能用一個替換另一個。 但是, CFMutableDictionaryRef
可以轉換為NSMutableDicionary
並且該轉換是免費的橋接轉換。 對於CFDictionaryRef
,等效對象是NSDicionary
。
如果您使用純C / C ++編寫程序,請使用Core Foundation的CFDicionary
。 對於Objective-C,您可以同時使用。
這些鏈接下面的內容可以為您提供幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.