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