2013-02-11 70 views
0

我有几个共享许多相同的类和自定义视图/视图控制器的项目,所以我创建了一个自定义静态库,其中包含这些常用类,以便直接在我的客户端项目中使用。Xcode无法识别我的自定义库中的ViewContoller

这是我所采取的步骤:

  1. 我创建和编译静态库,复制产生的u和公共.h文件放到一个文件夹我的桌面(MYLIB)上。

  2. 我将myLib文件夹拖放到客户端项目中。我通过引用复制,并没有复制我的客户端项目下的物理文件。如预期的那样,目标的构建阶段“与库链接二进制文件”阶段自动包含.a文件。

  3. 我引用了View Contollers使用客户端项目的故事板。这些类按预期自动完成,所以Xcode认识到它们的存在。

  4. 我在我的客户端项目构建设置和目标构建设置下设置了-ObjC和-all_load链接器标志。

  5. 我清理并成功构建了客户端项目。

  6. 我运行了客户端项目,但自定义视图未加载,引用了“Interface Builder文件中的未知类[myViewController]”。

第6步是我现在面临的问题。以下是一些可能有用的观察结果:

  • 在File Inspector中,标头的目标成员资格为空;客户端项目列在“目标成员”标题下,但该复选框已禁用且未选中。但是,myLib.a目标成员资格被选中。

  • 我试图在客户端项目中创建myViewController(clientViewController)的子类,并引用此类。当我建立了客户端项目,我得到一个错误:当你建立

    "warning: directory not found for option '-L/Users/[me]/Desktop/Projects/[clientProject]/[myLib]; Undefined symbols for architecture i386: [clientViewController] in [clientViewController.o]."

回答

0

模拟器选项,看起来像你错过了。只用这个。这是做一个通用框架一样容易使普通库: iOS-Universal-Framework

还阅读了这篇文章:How to create universal static libraries on Xcode 4: the traditional way

+0

我尝试使用模拟器计划建立我的图书馆,但由于某些原因,我的头文件没”当我建立图书馆时不要复制。我发现他们只会在我选择“iOS设备”时进行复制,因此我根据该方案进行构建。也许这跟它有关系? 无论如何,我会尝试这个通用框架的东西,也许它会奇迹般地解决我的问题,我真的不明白。好像我需要知道很多关于链接器和处理器体系结构的细节,只是为了在项目之间构建一些共享类... – user2060086 2013-02-11 03:38:07

+0

您是否确定为Universal创建?令人困惑的是,阅读这篇文章:http://blog.boreal-kiss.net/2011/03/15/how-to-create-universal-static-libraries-on-xcode-4/ – 2013-02-11 03:40:37