【问题标题】:Core Foundation to Foundation and vice-versa核心基础到基础,反之亦然
【发布时间】:2014-05-30 04:40:36
【问题描述】:

我今天刚刚了解了 __bridge 演员表,但我不了解其背后的含义:

Apple 为什么要创建两个彼此如此接近以至于可以免费互换的框架。

使用一种框架比另一种有什么好处?

有没有什么好的教程可以展示在两个框架之间桥接时使用的策略?

【问题讨论】:

    标签: core-foundation foundation bridge


    【解决方案1】:

    几年前,您可以选择在 Apple 环境中使用 C 或 Objective-C 编写代码。从基本的低级到 Mac 上的图形应用程序,您都可以访问这两个 API。

    两个 API 都需要相同的抽象和概念,以不拒绝使用 C 或 Objective-C 的开发人员。由于 Objective-C 是 C 的超集,因此很容易将一个 C 结构嵌入到 Objective-C 类中。这避免了重新创建不同的抽象并使两者之间的交互更容易。

    C 版本的好处是,您在较低层工作,这使您的代码在技术上更轻、更快,因为您不需要使用 Objective-C 运行时。 我说技术上是因为它比 Objective-C 级别低,但我不确定你今天能否在当前应用程序中抓住差异。 Objective-C 版本的好处是动态性和面向对象的代码。你可以用 C 版本做 OO,但它会更冗长。

    最好的桥接文档是 LLVM arc 文档:http://clang.llvm.org/docs/AutomaticReferenceCounting.html

    Mike ash 在此处对免费桥接有很好的解释:https://mikeash.com/pyblog/friday-qa-2010-01-22-toll-free-bridging-internals.html

    【讨论】:

      【解决方案2】:

      如果我没记错的话,Core Foundation 使用面向对象(因此位于更高的抽象级别上),而 Foundation 没有。在实践中,这意味着一个使用 Objective C 而另一个使用 C。这是 Apple 系统软件中反复出现的模式。原则上,您可以使用任何一种框架来混合使用它们:__bridge__ 通过允许使用外部实体来帮助您,就好像它们是某个类的合法 Objective-C 对象一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多