作为来自 VS 的新 MAC 开发人员,我并没有真正“了解”什么是框架。如果我在我的项目中添加一个框架,这是否自动意味着当我这样做时应该找到标题#include <SomeFile.h>
?
我似乎发现在某些情况下我也必须添加标题搜索路径。这是否意味着框架无法正常工作?
根据Apple 概念文档的定义:
框架是一个分层目录,将共享资源(如动态共享库、nib 文件、图像文件、本地化字符串、头文件和参考文档)封装在一个包中。
换句话说,它是一个或多个应用程序可以使用的资源的汇编,它本身并不是一个应用程序。
Apple 概念文档详细说明:
您可以使用该
#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 找到其头文件之前显式指定该框架的位置。要指定此类框架的位置,请将包含框架的目录添加到Xcode 项目的“框架搜索路径”选项中。Xcode 将此目录列表传递给编译器和链接器,它们都使用该列表来搜索框架资源。
如果框架编写得当,它包含标头以及实际的可链接(二进制)文件。编译器(以前是 GCC,最近是 LLVM-clang)识别框架路径并自动知道在哪里搜索框架头文件。但是有一些极端情况:
我希望这有帮助。