【问题标题】:Import in Cappuccino导入卡布奇诺
【发布时间】:2012-09-06 12:01:34
【问题描述】:

当我使用终端命令 capp gen MyProject 创建新的 Cappuccino 项目时,我得到了 AppController.j,它使用了许多 Foundation 和 AppKit 类,但只有一个 import 语句

@import <Foundation/CPObject.j>

卡布奇诺导入系统如何工作?应用程序如何知道 AppController.j 中使用的 CPNotification、CPWindow、CPTextField 和其他类。

谢谢!

【问题讨论】:

    标签: cappuccino


    【解决方案1】:

    大多数导入都是多余的,但拥有它们是件好事,因为它有助于我们的静态分析工具在您为生产构建时帮助去除代码。

    在 index.html 和 index-debug.html 页面上定义了两个“环境”变量。 见here

    OBJJ_INCLUDE_PATHS 基本上是 objj 在导入框架/库代码时要查看的位置列表。所以例如你这样做:

    @import <Foundation/CPObject.j>
    

    代替:

    @import "Foundation/CPObject.j>
    

    这是因为 Foundation/CPObject.j 存在于 Frameworks 中。所以 Doing@import "Frameworks/Foundation/CPObject.j 与使用尖括号完全相同。

    这意味着您可以将框架代码移动到您想要的任何目录,并且通过使用尖括号语法,我们能够在没有真实路径的情况下找到这些文件。


    那么,您的应用程序如何知道所有其他未直接导入的类? 好吧,如果您注意到我在上面链接到的索引文件中,还有另一行指定 objj 可以在哪里找到 main()。在该文件的顶部 main.j 导入 Foundation 和 AppKit 框架:See Here

    我们可以follow 这些导入并看到CPWindow.j 被导入line 109 of AppKit.j

    因此,由于 AppKit.j 为您导入了大部分 AppKit,您依赖于 CPWindow 的类(例如)不应该手动导入它……但它肯定不会受到伤害(文件永远不会被导入两次)。

    但由于 AppKit 和 Foundation 对您自己编写的类一无所知,因此您确实需要手动导入这些类。

    【讨论】:

    • 这是我能得到的最好解释!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-11-03
    • 2011-05-16
    • 2011-05-07
    • 2011-04-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多