我正试图从使用AVCaptureDevice捕获的图像中获取EXIF附件,如下所示:
CFDictionaryRef exifAttachments = (CFDictionaryRef)CMGetAttachment(buf, kCGImagePropertyExifDictionary, NULL);
NSMutableDictionary *exifAttachment = (__bridge NSMutableDictionary*)CMGetAttachment(buf, kCGImagePropertyExifDictionary, NULL);
两者似乎都返回相同的结果,尽管NSMutableDictionary需要__bridge
来转换类型。它们之间有什么区别?我什么时候应该使用哪个?
答案 0 :(得分:1)
首先,CFDictionaryRef
是不可变的,而NSMutableDictionary
是可变的(可以修改)。
您无法替换另一个。但是,CFMutableDictionaryRef
可以转换为NSMutableDicionary
,并且转换是免费的桥接转换。对于CFDictionaryRef
,等效对象为NSDicionary
。
如果您使用纯C / C ++编写程序,请使用Core Foundation的CFDicionary
。
对于Objective-C,您可以同时使用它们。
这些链接可以帮助您。
Relationship between CFMutableDictionary and NSMutableDictionary