我有2个项目,我想在第一个项目中使用,第二个是类(即视图控制器)。而不是在第一个项目中导入第二个项目的所有文件,有没有办法像框架或库一样链接它?
我尝试了以下尝试失败:
当我包含“SecondProjectViewController.h”时,我没有错误,但是当我尝试实例化它时,我得到“引用的OBJ C”错误。
任何帮助都是非常需要和赞赏的! =)
F。
答案 0 :(得分:3)
作为一名经验丰富的开发人员,我建议不要在项目间以这种方式共享代码。原因很简单,一个项目的变化将直接影响其他项目,通常会使它们无法编译。例如,如果您共享一个控制器类并决定使用新导入实现更改,那么使用该类的任何项目都将被破坏,直到您在xcode中打开并确保导入的类可用。
更好的方法是将第一个项目编译为静态库或框架。我还建议确保它是版本的某种方式。例如,在我的项目中,我创建静态框架并将它们存储在名为“v0.0.1”,“v0.0.2”等的目录中。
然后可以将框架拖放到第二个项目中以使用它。然后第二个项目通过目录路径引用它。这样做的好处是,如果我然后更改第一个项目,第二个项目如果不受更改影响,直到我选择更新框架路径。
项目之间共享文件适用于小型案例,即2个或4个项目,但是一旦你拥有更多,它就会迅速变得无法管理。
答案 1 :(得分:1)
您只需要几步:
4)在第一个项目中,单击“组和文件”部分中的显示三角形以获取“第二个项目”参考。这将显示第二个项目的目标。
5)将目标参考(例如静态库)从第二个项目拖到第一个项目链接阶段的目标。
这应该清除Second Project库中存在的符号的所有链接器错误。当然,你必须删除那些从First编译和链接的源(基于第二秒)。
通过这种方式管理大型代码库的静态库很容易(尽管我更喜欢构建到最新版本(以及几个构建变体),并且不像Derek那样引用存档的二进制文件)。学习尽量减少破坏构建的变化需要时间来学习。动态库有点不同 - 根据它们的分布,你可能想要版本(如Derek概述)。分享很好,但是你应该将共享的导出符号放在一个库中,这是两个应用程序的依赖关系。注意不要在库中添加太多不必要的objc符号 - objc符号及其引用不能从最终的可执行文件和中剥离,如果它们出现在两个图像中,它们将导致运行时冲突(dylib,app ,static lib)在同一个进程中。
答案 2 :(得分:0)
您可以将视图控制器的文件添加到第一个项目,无论它们在磁盘上的哪个位置 - 项目都会引用它们的位置。