【问题标题】:Relationship between CFMutableDictionary and NSMutableDictionaryCFMutableDictionary 和 NSMutableDictionary 的关系
【发布时间】:2009-09-17 15:21:04
【问题描述】:

以下语句摘自CFMutableDictionary Reference section of the Mac OS X Reference Library

CFMutableDictionary 与其 Cocoa Foundation 对应的 NSMutableDictionary 是“免费桥接”。这意味着 Core Foundation 类型在函数或方法调用中可以与桥接的 Foundation 对象互换。这意味着在看到 NSMutableDictionary * 参数的方法中,可以传入 CFMutableDictionaryRef,在看到 CFMutableDictionaryRef 参数的函数中,可以传入 NSMutableDictionary 实例。这也适用于 NSMutableDictionary 的具体子类。有关免费桥接的更多信息,请参阅可互换数据类型。

有人可以把它翻译成简单的英语吗? :-)

【问题讨论】:

    标签: objective-c cocoa


    【解决方案1】:

    这意味着你在任何看到 NSMutableDictionary 的地方都可以使用 CFMutableDictionary,反之亦然,无需显式转换。

    由于 NSMutableDictionary 的具体子类IS A NSMutableDictionary,它们也可以在任何使用 CFMutableDictionary 的地方使用。

    基本上是一种迂回的说法,即类型之间可以隐式转换。

    这个link 有更多信息。

    【讨论】:

    • 这完全是真的吗?每当您请求NSMutableDictionary 时,您得到的是NSCFMutableDictionaryNSMutableDictionary 只是类簇的 abstract 基类,NSCFMutableDictionary 是具体的子类。我相信子类化NSMutableDictionary 将创建一个没有免费桥部分的NSCFMutableDictionary 的兄弟姐妹。
    • 请注意,如果您创建的 CFDictionary 或 CFMutableDictionary 没有保留/释放回调,则不能免费桥接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    相关资源
    最近更新 更多