我将从我的应用程序发送邮件,并添加了MessageUI框架。在Apple的示例代码中,他们写道:
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
这些之间的区别是什么,以及“斜线”在那里做什么?
答案 0 :(得分:6)
斜杠基本上是说.h文件位于斜杠之前命名的框架的框架中。
两者之间的区别在于,通过使用/MessageUI.h>
,您在执行与导入框架中的每个类相同的操作。当您使用/MFMailComposeViewController.h>
时,您只在框架中实现了一个类。因此,除了导入的类之外,不会有其他类可用。
答案 1 :(得分:6)
#import <MessageUI/MessageUI.h> #import <MessageUI/MFMailComposeViewController.h>
这些之间有什么区别, 什么是“斜线”在那里做什么?
该工具集添加了对框架的支持,并在给定构建设置的情况下定义框架的搜索路径(例如标题和链接)。
框架定义了Headers/
目录。
使用此框架路径时,可以使用路径分隔符(/
)分离/发现框架路径。
使用apple的框架,第一个成语#import <FRAMEWORK_NAME/FRAMEWORK_NAME.h>
是通过包含(大部分)框架的公共头文件来包含框架的公共声明的常用方法。在许多情况下,它将包含框架的公共标头的所有,但也有一些例外。在程序中使用这个习惯用法通常是最好的,因为它可以使你不受标题的内部依赖性的影响,这些依赖性可能会在各个版本中发生变化。
第二种形式与第一种形式相同,因为它们都指定了要包含的特定标题。它的不同之处在于您明确地包含了一个特定的标题 - 在大多数情况下,这意味着您只包含框架标题的一部分(当框架的主要包含结构为apple方式时)。许多库不是以这种方式使用的 - 编译器可能会遇到未声明的类型(作为示例)。在这种情况下,如果遇到构建错误,则必须包含头的附加依赖项。
您可能更喜欢第一种形式有几个原因,主要原因是易于维护。体贴的框架维护者将准确地包括框架的头部必须包含的内容而不会出错。
还有一些理由可以选择后一种形式: