进口卡布奇诺

时间:2012-09-06 12:01:34

标签: cappuccino

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

@import <Foundation/CPObject.j>

卡布奇诺进口系统如何运作?应用程序如何了解CPNotification,CPWindow,CPTextField以及AppController.j中使用的其他类。

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

@import <Foundation/CPObject.j>

而不是:

@import "Foundation/CPObject.j>

那是因为 Foundation / CPObject.j 存在于框架中。因此,执行@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的类(例如)不应该手动导入它......但它肯定不会受到伤害(文件永远不会被导入两次)。 / p>

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