首页 » iOS编程基础:Swift、Xcode和Cocoa入门指南 » iOS编程基础:Swift、Xcode和Cocoa入门指南全文在线阅读

《iOS编程基础:Swift、Xcode和Cocoa入门指南》1.10 模块

关灯直达底部

顶层命名空间是模块。在默认情况下,应用本身就是个模块,因此也是个命名空间;大概来说,命名空间的名字就是应用的名字。比如,假如应用叫作MyApp,那么如果在文件顶层声明一个类Manny,那么该类的真实名字就是MyApp.Manny。但通常情况下是不需要这个真实名字的,因为代码已经在相同的命名空间中了,可以直接看到名字Manny。

框架也是模块,因此它们也是命名空间。比如,Cocoa的Foundation框架(NSString位于其中)就是个模块。在编写iOS程序时,你会import Foundation(还有可能import UIKit,它本身又会导入Foundation),这样就可以直接使用NSString而不必写成Foundation.NSString了。不过你可以写成Foundation.NSString,如果在自己的模块中声明了一个不同的NSString,那么为了区分它们,你就只能写成Foundation.NSString了。你还可以创建自己的框架,当然了,它们也都是模块。

如示例1-1所示,文件层级之外的是文件所导入的库或模块。代码总是会隐式导入Swift本身。还可以显式导入,方式就是以import Swift作为文件的开始;但没必要这么做,不过这么做也没什么弊端。

这个事实是非常重要的,因为它解决了一个大谜团:如print来自于哪里,为何可以在任何对象的任何消息之外使用它们?事实上,print是在Swift.h头文件的顶层声明的一个函数——你的文件可以看到它,因为它导入了Swift。它就是个普通的顶层函数,与其他函数一样。你可以写成Swift.print("hello"),但没必要,因为并不会出现冲突。

你可以查看Swift.h文件并阅读和研究它,这么做很有帮助。要想做到这一点,请按住Command键并单击代码中的print。此外,还可以显式import Swift并按住Command键,然后单击Swift来查看其头文件!你看不到任何可执行的Swift代码,不过却可以查看到所有可用的Swift声明,包括如print之类的顶层函数、+之类的运算符以及内建类型的声明,如Int和String(查找struct Int、struct String等)。