如何将独立的 Xcode 项目作为模块导入到另一个项目中?

How to import standalone Xcode Project as a module to another project?

提问人:Suraj 提问时间:8/10/2017 更新时间:8/10/2017 访问量:1572

问:

这两个项目都使用相同的框架。两者都有 appdelegates。已成功在工作区中添加两个项目。但无法访问彼此的控制器。制作一个项目的静态库没有帮助。制作一个项目的框架??走哪条路?

iOS 工作区 框架 IOS 库

评论


答:

3赞 Turtleeeeee 8/10/2017 #1

因为你说的是制作一个静态库,所以我认为你的项目是一个 OC 项目。所以事情是这样的,如果你要合并这两个应用程序,你应该首先取出不能复制的内容,比如AppDelegate和其他一些应用程序设置。

您说将两个项目放入一个工作区中,但无法从一个项目的视图控制器访问另一个项目。那是因为您没有以正确的方式导入标头。

例如,每个项目都有自己的标头搜索路径,可以在 xcodeproj-Build Settings->search 标头搜索路径中设置。默认情况下,一个 xcodeproj 的标头搜索路径的当前路径 (“.”) 位于 xcodeproj 所在的位置。Xcode 以递归方式搜索该文件夹中的所有标头。

如果要从应用程序 A 访问应用程序 B 的标头,假定应用程序 A 的根文件夹中有一个视图控制器。要访问应用程序 B 的标头,您的导入可能如下所示:

如果您只想导入“somekindofVC.h”,您可以添加“../app B“作为构建设置中的标头搜索路径,并在必要时选择”递归“选项。
#import "../app B/somekindofVC.h"

这就是您的 xcodeproj 可以找到另一个人的标头的方式。

还有一件更重要的事情是,你应该将应用 B 的共享代码添加到编译源中。由于应用 A 可以通过标头知道应用 B 的类,因此编译器不知道应用 B 的类的实现是什么。因此,在运行项目之前,请记住在 Build Phases->Compile Sources 中添加所需的“.m”文件。

评论

0赞 Suraj 8/10/2017
#import“../Projectname“不起作用。我错过了什么吗?我的文件夹结构有误吗?
0赞 Turtleeeeee 8/11/2017
如果它不起作用,你一定错过了什么。如果可以的话,你最好发布你的文件夹结构,这样我就可以更详细地介绍。文件夹结构并不意味着 Xcode 的组结构,它意味着您可以在 Finder 中看到它的真实文件组织。
0赞 Turtleeeeee 8/11/2017
顺便说一句,我上面讲的标题搜索示例是基于应用程序 A 和应用程序 B 放在一个大文件夹中的条件,以便应用程序 A 的每个文件都可以使用相对路径来查找应用程序 B 的标头。
0赞 Suraj 8/11/2017
ProjectMerge 文件夹包含 ProjectA(文件夹)、ProjectB(文件夹)和工作区文件。ProjectA 和 B 分别拥有自己的 .xcodeproject 文件和所有其他控制器、库和框架。
0赞 Turtleeeeee 8/11/2017
根据你刚才说的,很难说问题出在哪里。我刚刚为您创建了一个演示。你可以检查一下。当您简单地将文件添加到其编译源后,当您从外部添加文件时,似乎 Xcode 项目必须将一个文件拖到其字段中。顺便说一句,你可以看到,它在应用程序 B 中导入一个标头。您可以运行应用程序 A 来查看结果。App A->ViewController.m