作为一名来自VS的新MAc开发人员,我并不真正“了解”框架是什么。如果我将一个框架添加到我的项目中,这是否自动意味着我应该在#include <SomeFile.h>
时找到标题?
我似乎在某些情况下发现我还要添加标题搜索路径。这是否意味着框架无法正常工作?
答案 0 :(得分:4)
由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 是该框架或其子框架中的头文件的名称。
包含框架头文件时,传统包含 只有主框架头文件。主头文件是 头文件,其名称与框架的名称相匹配。例如, Address Book框架有一个名为master的头文件
AddressBook.h
。
要包含自定义框架:
如果您的项目链接到任何未包含的框架 在标准位置,您必须明确指定位置 Xcode之前的那个框架可以找到它的头文件。要指定 这样一个框架的位置,添加包含的目录 “Framework Search Paths” option of your Xcode project的框架。 Xcode将此目录列表传递给编译器和 链接器,它们都使用列表来搜索框架资源。
答案 1 :(得分:3)
如果框架已正确编写,则它包含标头以及实际的可链接(二进制)文件。编译器(GCC以前,最近的LLVM-clang)识别框架路径并自动知道搜索框架头的位置。但是有一些极端情况:
我希望这会有所帮助。