0

我想從使用AVCaptureDevice這樣拍攝的圖像的EXIF附件:NSMutableDictionary和CFDictionaryRef有什麼區別?

CFDictionaryRef exifAttachments = (CFDictionaryRef)CMGetAttachment(buf, kCGImagePropertyExifDictionary, NULL); 

NSMutableDictionary *exifAttachment = (__bridge NSMutableDictionary*)CMGetAttachment(buf, kCGImagePropertyExifDictionary, NULL); 

似乎都返回相同的結果,雖然一個的NSMutableDictionary需要__bridge投類型。他們之間有什麼不同?我應該什麼時候使用哪個?

回答

1

首先,CFDictionaryRef是不可變的,而NSMutableDictionary是可變的(可以修改)。

你不能用另一個替換。但是,CFMutableDictionaryRef可以轉換爲NSMutableDicionary,該轉換是免費的橋接轉換。對於CFDictionaryRef,等效對象是NSDicionary

如果您使用純C/C++編寫程序,請使用Core Foundation的CFDicionary。對於Objective-C,你可以同時使用兩者。

下面這些鏈接可以幫助你。

Relationship between CFMutableDictionary and NSMutableDictionary

NSMutableDictionary vs CFMutableDictionary