NSMutableDictionary和CFDictionaryRef有什么区别?

时间:2014-01-08 08:30:41

标签: ios objective-c dictionary nsdictionary nsmutabledictionary

我正试图从使用AVCaptureDevice捕获的图像中获取EXIF附件,如下所示:

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

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

两者似乎都返回相同的结果,尽管NSMutableDictionary需要__bridge来转换类型。它们之间有什么区别?我什么时候应该使用哪个?

1 个答案:

答案 0 :(得分:1)

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

您无法替换另一个。但是,CFMutableDictionaryRef可以转换为NSMutableDicionary,并且转换是免费的桥接转换。对于CFDictionaryRef,等效对象为NSDicionary

如果您使用纯C / C ++编写程序,请使用Core Foundation的CFDicionary。 对于Objective-C,您可以同时使用它们。

这些链接可以帮助您。

Relationship between CFMutableDictionary and NSMutableDictionary

NSMutableDictionary vs CFMutableDictionary