【发布时间】:2012-05-03 21:59:45
【问题描述】:
作为来自 VS 的新 MAC 开发人员,我并没有真正“了解”什么是框架。如果我在我的项目中添加一个框架,这是否意味着当我执行#include <SomeFile.h> 时应该可以找到标头?
我似乎发现在某些情况下我还必须添加标题搜索路径。这是否意味着框架无法正常工作?
【问题讨论】:
作为来自 VS 的新 MAC 开发人员,我并没有真正“了解”什么是框架。如果我在我的项目中添加一个框架,这是否意味着当我执行#include <SomeFile.h> 时应该可以找到标头?
我似乎发现在某些情况下我还必须添加标题搜索路径。这是否意味着框架无法正常工作?
【问题讨论】:
由Apple Conceptual Documentation定义:
框架是封装共享的分层目录 资源,例如动态共享库、nib 文件、图像文件、 本地化字符串、头文件和参考文档 单包。
换句话说,它是一个或多个应用程序可以使用的资源的汇编,它本身并不是一个应用程序。
详情由Apple Conceptual Documentation:
您使用
#include在代码中包含框架头文件 指示。如果你在 Objective-C 中工作,你可以使用#import指令而不是#include指令。他们俩 指令具有相同的基本结果。但是#import指令 保证同一个头文件不会被多次包含。 包含框架头有两种方法:#include <Framework_name/Header_filename.h> #import <Framework_name/Header_filename.h>在这两种情况下,Framework_name 都是框架的名称,并且 Header_filename 是该框架或其子框架之一中的头文件的名称。
在包含框架头文件时,传统的做法是包含 只有主框架头文件。主头文件是 名称与框架名称匹配的头文件。例如, 地址簿框架有一个主头文件,其名称为
AddressBook.h.
要包含自定义框架:
如果您的项目链接到的框架未包含在任何 标准位置,您必须明确指定 该框架在 Xcode 可以找到其头文件之前。指定 此类框架的位置,添加包含 框架到“Framework Search Paths” option of your Xcode project。 Xcode 将此目录列表传递给编译器,然后 链接器,它们都使用列表来搜索框架资源。
【讨论】:
如果框架编写正确,它会包含标头以及实际的可链接(二进制)文件。编译器(以前是 GCC,最近是 LLVM-clang)识别框架路径并自动知道在哪里搜索框架头文件。不过也有一些极端情况:
我希望这会有所帮助。
【讨论】: